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

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

?? forwcomptransf.java

?? jpeg2000算法實現
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
    /**     * Apply the component transformation associated with the current tile. If     * no component transformation has been requested by the user, data are     * not modified. Else, appropriate method is called (forwRCT or forwICT).     *     * @see #forwRCT     *     * @see #forwICT     *     * @param blk Determines the rectangular area to return.     *     * @param c Index of the output component.     *     * @return The requested DataBlk     * */    public DataBlk getInternCompData(DataBlk blk, int c){        switch(transfType){        case NONE: 	    return src.getInternCompData(blk,c);        case FORW_RCT:	    return forwRCT(blk,c);        case FORW_ICT:	    return forwICT(blk,c);        default:            throw new IllegalArgumentException("Non JPEG 2000 part I component"+                                               " transformation for tile: "+                                               tIdx);        }    }    /**      * Apply forward component transformation to obtain requested component     * from specified block of data. Whatever the type of requested DataBlk,     * it always returns a DataBlkInt.     *     * @param blk Determine the rectangular area to return      *     * @param c The index of the requested component     *     * @return Data of requested component     * */    private DataBlk forwRCT(DataBlk blk,int c){        int k,k0,k1,k2,mink,i;        int w = blk.w; //width of output block        int h = blk.h; //height of ouput block        int  outdata[]; //array of output data        //If asking for Yr, Ur or Vr do transform        if(c >= 0 && c <= 2) {	    // Check that request data type is int	    if(blk.getDataType()!=DataBlk.TYPE_INT){		if(outBlk==null || outBlk.getDataType() != DataBlk.TYPE_INT){		    outBlk = new DataBlkInt();		}		outBlk.w = w;		outBlk.h = h;		outBlk.ulx = blk.ulx;		outBlk.uly = blk.uly;		blk = outBlk;	    }            //Reference to output block data array            outdata = (int[]) blk.getData();            //Create data array of blk if necessary            if(outdata == null || outdata.length<h*w) {                outdata = new int[h*w];                blk.setData(outdata);            }            // Block buffers for input RGB data            int data0[],data1[],bdata[]; // input data arrays	    if(block0==null)		block0 = new DataBlkInt();	    if(block1==null)		block1 = new DataBlkInt();	    if(block2==null)		block2 = new DataBlkInt(); 	    block0.w = block1.w = block2.w = blk.w;	    block0.h = block1.h = block2.h = blk.h;	    block0.ulx = block1.ulx = block2.ulx = blk.ulx;	    block0.uly = block1.uly = block2.uly = blk.uly;            //Fill in buffer blocks (to be read only)            // Returned blocks may have different size and position            block0 = (DataBlkInt)src.getInternCompData(block0, 0);            data0 = (int[]) block0.getData();            block1 = (DataBlkInt)src.getInternCompData(block1, 1);            data1 = (int[]) block1.getData();            block2 = (DataBlkInt)src.getInternCompData(block2, 2);            bdata = (int[]) block2.getData();            // Set the progressiveness of the output data            blk.progressive = block0.progressive || block1.progressive ||                block2.progressive;	    blk.offset = 0;            blk.scanw = w;            //Perform conversion            // Initialize general indexes            k = w*h-1;            k0 = block0.offset+(h-1)*block0.scanw+w-1;            k1 = block1.offset+(h-1)*block1.scanw+w-1;            k2 = block2.offset+(h-1)*block2.scanw+w-1;            switch(c) {            case 0: //RGB to Yr conversion                for (i = h-1; i >= 0; i--) {                    for (mink = k-w; k > mink; k--, k0--, k1--, k2--) {                        // Use int arithmetic with 12 fractional bits                        // and rounding                        outdata[k] =                            ( data0[k] + 2 * data1[k] + bdata[k]                              ) >> 2; // Same as / 4                    }                    // Jump to beggining of previous line in input                    k0 -= block0.scanw - w;                    k1 -= block1.scanw - w;                    k2 -= block2.scanw - w;                }                break;			    case 1: //RGB to Ur conversion                for (i = h-1; i >= 0; i--) {                    for (mink = k-w; k > mink; k--, k1--, k2--) {                        // Use int arithmetic with 12 fractional bits                        // and rounding                        outdata[k] = bdata[k2] - data1[k1];                    }                    // Jump to beggining of previous line in input                    k1 -= block1.scanw - w;                    k2 -= block2.scanw - w;                }                break;	    case 2:  //RGB to Vr conversion                for (i = h-1; i >= 0; i--) {                    for (mink = k-w; k > mink; k--, k0--, k1--) {                        // Use int arithmetic with 12 fractional bits                        // and rounding                        outdata[k] = data0[k0] - data1[k1];                    }                    // Jump to beggining of previous line in input                    k0 -= block0.scanw - w;                    k1 -= block1.scanw - w;                }                break;		            }        }        else if (c >= 3) {            // Requesting a component which is not Y, Ur or Vr =>            // just pass the data                        return src.getInternCompData(blk,c);        }        else {            // Requesting a non valid component index            throw new IllegalArgumentException();        }	return blk;    }    /**      * Apply forward irreversible component transformation to obtain requested     * component from specified block of data. Whatever the type of requested     * DataBlk, it always returns a DataBlkFloat.     *     * @param blk Determine the rectangular area to return      *     * @param c The index of the requested component     *     * @return Data of requested component     * */    private DataBlk forwICT(DataBlk blk,int c){        int k,k0,k1,k2,mink,i;        int w = blk.w; //width of output block        int h = blk.h; //height of ouput block        float  outdata[]; //array of output data		if(blk.getDataType()!=DataBlk.TYPE_FLOAT){	    if(outBlk==null || outBlk.getDataType() != DataBlk.TYPE_FLOAT){		outBlk = new DataBlkFloat();	    }	    outBlk.w = w;	    outBlk.h = h;	    outBlk.ulx = blk.ulx;	    outBlk.uly = blk.uly;	    blk = outBlk;	}		//Reference to output block data array	outdata = (float[]) blk.getData();		//Create data array of blk if necessary	if(outdata == null) {	    outdata = new float[h * w];	    blk.setData(outdata);	}        //If asking for Y, Cb or Cr do transform        if(c>=0 && c<=2) {                    int data0[],data1[],data2[]; // input data arrays	    if(block0==null)		block0 = new DataBlkInt();	    if(block1==null)		block1 = new DataBlkInt();	    if(block2==null)		block2 = new DataBlkInt(); 	    block0.w = block1.w = block2.w = blk.w;	    block0.h = block1.h = block2.h = blk.h;	    block0.ulx = block1.ulx = block2.ulx = blk.ulx;	    block0.uly = block1.uly = block2.uly = blk.uly;            // Returned blocks may have different size and position            block0 = (DataBlkInt)src.getInternCompData(block0, 0);            data0 = (int[]) block0.getData();            block1 = (DataBlkInt)src.getInternCompData(block1, 1);            data1 = (int[]) block1.getData();            block2 = (DataBlkInt)src.getInternCompData(block2, 2);            data2 = (int[]) block2.getData();            // Set the progressiveness of the output data            blk.progressive = block0.progressive || block1.progressive ||                block2.progressive;	    blk.offset = 0;            blk.scanw = w;            //Perform conversion            // Initialize general indexes            k = w*h-1;            k0 = block0.offset+(h-1)*block0.scanw+w-1;            k1 = block1.offset+(h-1)*block1.scanw+w-1;            k2 = block2.offset+(h-1)*block2.scanw+w-1;            switch(c) {            case 0:             //RGB to Y conversion                for (i = h-1; i >= 0; i--) {                    for (mink = k-w; k > mink; k--, k0--, k1--, k2--) {                        outdata[k] =                            0.299f * data0[k0]                            + 0.587f * data1[k1]                            + 0.114f * data2[k2];		    }                    // Jump to beggining of previous line in input                    k0 -= block0.scanw - w;                    k1 -= block1.scanw - w;                    k2 -= block2.scanw - w;		}                break;                           case 1:              //RGB to Cb conversion                for (i = h-1; i >= 0; i--) {                    for (mink = k-w; k > mink; k--, k0--, k1--, k2--) {			outdata[k] =			    - 0.16875f * data0[k0]			    - 0.33126f * data1[k1]			    + 0.5f * data2[k2];		    }                    // Jump to beggining of previous line in input                    k0 -= block0.scanw - w;                    k1 -= block1.scanw - w;                    k2 -= block2.scanw - w;		}                break;                           case 2:            //RGB to Cr conversion                for (i = h-1; i >= 0; i--) {                    for (mink = k-w; k > mink; k--, k0--, k1--, k2--) {			outdata[k] =			    0.5f * data0[k0]			    - 0.41869f * data1[k1]			    - 0.08131f * data2[k2];		    }                    // Jump to beggining of previous line in input                    k0 -= block0.scanw - w;                    k1 -= block1.scanw - w;                    k2 -= block2.scanw - w;		}                break;            }        }        else if(c>=3) {            // Requesting a component which is not Y, Cb or Cr =>            // just pass the data                        // Variables            DataBlkInt indb = new DataBlkInt(blk.ulx,blk.uly,w,h);            int indata[]; // input data array            // Get the input data            // (returned block may be larger than requested one)            src.getInternCompData(indb,c);            indata = (int[]) indb.getData();            // Copy the data converting from int to float            k = w*h-1;            k0 = indb.offset+(h-1)*indb.scanw+w-1;            for (i=h-1; i>=0; i--) {                for (mink = k-w; k > mink; k--, k0--) {                    outdata[k] = (float) indata[k0];                }                // Jump to beggining of next line in input                k0 += indb.w - w;            }            // Set the progressivity            blk.progressive = indb.progressive;            blk.offset = 0;            blk.scanw = w;	    return blk;        }        else {            // Requesting a non valid component index            throw new IllegalArgumentException();        }	return blk;	    }    /**     * Changes the current tile, given the new indexes. An     * IllegalArgumentException is thrown if the indexes do not correspond to     * a valid tile.     *     * <P>This default implementation changes the tile in the source and     * re-initializes properly component transformation variables..     *     * @param x The horizontal index of the tile.     *     * @param y The vertical index of the new tile.     * */    public void setTile(int x, int y) {        src.setTile(x,y);	tIdx = getTileIdx(); // index of the current tile        // initializations        String str = (String)cts.getTileDef(tIdx);        if(str.equals("none")){            transfType = NONE;        }        else if(str.equals("rct")){            transfType = FORW_RCT;            initForwRCT();        }        else if(str.equals("ict")){            transfType = FORW_ICT;            initForwICT();        }                    else{            throw new IllegalArgumentException("Component transformation"+                                               " not recognized");        }    }    /**     * Advances to the next tile, in standard scan-line order (by rows then     * columns). An NoNextElementException is thrown if the current tile is     * the last one (i.e. there is no next tile).     *     * <P>This default implementation just advances to the next tile in the     * source and re-initializes properly component transformation variables.     * */    public void nextTile() {        src.nextTile();	tIdx = getTileIdx(); // index of the current tile        // initializations        String str = (String)cts.getTileDef(tIdx);        if(str.equals("none")){            transfType = NONE;        }        else if(str.equals("rct")){            transfType = FORW_RCT;            initForwRCT();        }        else if(str.equals("ict")){            transfType = FORW_ICT;            initForwICT();        }                    else{            throw new IllegalArgumentException("Component transformation"+                                               " not recognized");        }    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色电影在线| 亚洲美女在线国产| 亚洲品质自拍视频网站| 乱一区二区av| 色婷婷av一区| 国产精品免费av| 免费久久99精品国产| 在线国产电影不卡| 中文字幕一区日韩精品欧美| 天天色综合成人网| 欧美亚州韩日在线看免费版国语版 | 色综合久久66| 欧美激情一区二区| 精品一区二区在线看| 欧美三级日韩三级| 亚洲视频一区二区免费在线观看| 国产乱子伦一区二区三区国色天香| 欧美性大战xxxxx久久久| 中文字幕一区二区三区在线观看 | 亚洲一区二区中文在线| 福利一区二区在线观看| 日韩一级片在线播放| 亚洲国产欧美日韩另类综合| 色综合久久中文字幕综合网| 国产人成亚洲第一网站在线播放| 美女www一区二区| 日韩一区二区精品| 美女精品自拍一二三四| 69av一区二区三区| 五月天一区二区三区| 欧美日韩精品电影| 五月激情丁香一区二区三区| 在线成人免费观看| 亚洲成a人片综合在线| 欧美日韩在线三级| 婷婷六月综合网| 欧美日韩一级黄| 日本中文一区二区三区| 欧美一区二区人人喊爽| 喷水一区二区三区| 久久久久久久久免费| 国产精品18久久久久久久久| 国产片一区二区| 成人app下载| 一区二区三区日韩欧美精品 | 日韩一级片在线观看| 久久精品二区亚洲w码| 精品国产乱码久久久久久老虎| 蜜臀av国产精品久久久久| 欧美www视频| 成人不卡免费av| 亚洲一区二区三区在线播放| 91精品国产高清一区二区三区| 日韩激情av在线| 欧美大尺度电影在线| 国产一区二区三区av电影| 亚洲国产精品ⅴa在线观看| 日本韩国一区二区| 久久精品国产秦先生| 国产精品情趣视频| 欧美精品高清视频| 国产精品一区二区久久不卡| 日韩毛片高清在线播放| 91精品国产麻豆| 国产剧情一区二区| 亚洲综合小说图片| 337p粉嫩大胆色噜噜噜噜亚洲| 成人免费视频一区二区| 亚洲国产精品欧美一二99| 久久夜色精品一区| 欧洲av一区二区嗯嗯嗯啊| 久久成人免费日本黄色| 亚洲女与黑人做爰| 精品国产一区二区在线观看| 99久久婷婷国产| 久久精品国产精品亚洲红杏| 亚洲免费在线观看视频| 久久久亚洲高清| 欧美高清视频在线高清观看mv色露露十八 | 亚洲综合区在线| 欧美精品一区二区三区蜜臀| 色88888久久久久久影院野外| 国产一区欧美一区| 丝袜美腿亚洲色图| 亚洲色大成网站www久久九九| 欧美电视剧免费观看| 欧美日韩一本到| 91在线国内视频| 国产麻豆视频精品| 日韩av二区在线播放| 亚洲综合免费观看高清完整版在线| 久久久不卡网国产精品一区| 欧美一区二区三区在线看| 欧美在线一区二区| 色菇凉天天综合网| 9久草视频在线视频精品| 国产一区欧美日韩| 狠狠色狠狠色合久久伊人| 日本成人在线不卡视频| 亚洲午夜免费福利视频| 亚洲视频狠狠干| 国产精品久久久久久久浪潮网站 | 亚洲永久免费av| 亚洲素人一区二区| 国产精品污网站| 中文一区二区在线观看| 久久影院视频免费| 久久精品人人做人人爽97| 精品电影一区二区三区 | 亚洲人成小说网站色在线 | 欧美成人女星排行榜| 6080日韩午夜伦伦午夜伦| 欧美日韩五月天| 在线免费视频一区二区| 91日韩精品一区| 成人精品亚洲人成在线| 成人av资源在线| 91丨九色丨蝌蚪丨老版| 色婷婷综合视频在线观看| 色综合 综合色| 欧美在线观看视频在线| 欧美日韩国产另类一区| 91麻豆精品国产91久久久久| 日韩一区二区在线观看| 精品国产亚洲在线| 久久精品免视看| 国产精品传媒在线| 夜夜亚洲天天久久| 日本欧美一区二区| 国产精品综合久久| 99久久综合99久久综合网站| 色999日韩国产欧美一区二区| 欧美网站大全在线观看| 精品第一国产综合精品aⅴ| 国产午夜精品在线观看| 依依成人综合视频| 青青草97国产精品免费观看| 国产精品自拍毛片| 91黄视频在线观看| 日韩一区二区三区视频| 亚洲美女电影在线| 亚洲444eee在线观看| 99re热视频这里只精品| 在线观看日韩精品| 日韩美女天天操| 国产精品丝袜在线| 亚洲一区二区三区影院| 精品一区二区国语对白| 91丨porny丨最新| 欧美一区二区三区视频在线 | 另类的小说在线视频另类成人小视频在线| 日韩成人免费电影| 成人av影视在线观看| 欧美日韩激情在线| 国产欧美一区二区精品性色| 亚洲综合丝袜美腿| 国产成人99久久亚洲综合精品| 在线视频欧美区| 国产拍欧美日韩视频二区| 午夜欧美电影在线观看| 国产成人综合亚洲91猫咪| 欧美伦理视频网站| 国产精品亲子伦对白| 黄网站免费久久| 国产呦萝稀缺另类资源| 另类小说欧美激情| 蜜桃一区二区三区在线| 99re在线精品| 精品欧美一区二区在线观看| 亚洲精品视频自拍| 国产精品一区专区| 欧美日韩精品免费观看视频| 国产精品久久夜| 乱一区二区av| 日韩一区国产二区欧美三区| 亚洲在线免费播放| av中文字幕不卡| 久久久久久亚洲综合影院红桃| 视频一区中文字幕| 欧美婷婷六月丁香综合色| 亚洲欧洲精品一区二区三区| 国产一区二区主播在线| 3d动漫精品啪啪| 性做久久久久久免费观看| 色综合久久中文字幕| 亚洲天堂免费在线观看视频| 国产精品88av| 国产香蕉久久精品综合网| 黄一区二区三区| 久久久久久久久久久久久女国产乱| 天天射综合影视| 欧美一区二区三区精品| 日本不卡视频一二三区| 在线成人午夜影院| 日本午夜一区二区| 欧美日韩国产成人在线91| 亚洲大片免费看| 欧美日韩电影一区| 日本成人中文字幕| 日韩欧美国产三级|