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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rpng2-x.c

?? Borland C++BuilderT 6 Developer s Guide
?? C
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
    if (depth == 24 || depth == 32) {
        ulg red, green, blue;

        for (row = 0;  row < rpng2_info.height;  ++row) {
            src = bg_data + row*bg_rowbytes;
            dest = ximage->data + row*ximage_rowbytes;
            for (i = rpng2_info.width;  i > 0;  --i) {
                red   = *src++;
                green = *src++;
                blue  = *src++;
                pixel = (red   << RShift) |
                        (green << GShift) |
                        (blue  << BShift);
                /* recall that we set ximage->byte_order = MSBFirst above */
                /* GRR BUG:  this assumes bpp == 32, but may be 24: */
                *dest++ = (char)((pixel >> 24) & 0xff);
                *dest++ = (char)((pixel >> 16) & 0xff);
                *dest++ = (char)((pixel >>  8) & 0xff);
                *dest++ = (char)( pixel        & 0xff);
            }
        }

    } else if (depth == 16) {
        ush red, green, blue;

        for (row = 0;  row < rpng2_info.height;  ++row) {
            src = bg_data + row*bg_rowbytes;
            dest = ximage->data + row*ximage_rowbytes;
            for (i = rpng2_info.width;  i > 0;  --i) {
                red   = ((ush)(*src) << 8);  ++src;
                green = ((ush)(*src) << 8);  ++src;
                blue  = ((ush)(*src) << 8);  ++src;
                pixel = ((red   >> RShift) & RMask) |
                        ((green >> GShift) & GMask) |
                        ((blue  >> BShift) & BMask);
                /* recall that we set ximage->byte_order = MSBFirst above */
                *dest++ = (char)((pixel >>  8) & 0xff);
                *dest++ = (char)( pixel        & 0xff);
            }
        }

    } else /* depth == 8 */ {

        /* GRR:  add 8-bit support */

    }

    XPutImage(display, window, gc, ximage, 0, 0, 0, 0, rpng2_info.width,
      rpng2_info.height);

    return 0;

} /* end function rpng2_x_load_bg_image() */





static void rpng2_x_display_row(ulg row)
{
    uch bg_red   = rpng2_info.bg_red;
    uch bg_green = rpng2_info.bg_green;
    uch bg_blue  = rpng2_info.bg_blue;
    uch *src, *src2=NULL;
    char *dest;
    uch r, g, b, a;
    int ximage_rowbytes = ximage->bytes_per_line;
    ulg i, pixel;
    static int rows=0, prevpass=(-1);
    static ulg firstrow;

/*---------------------------------------------------------------------------
    rows and firstrow simply track how many rows (and which ones) have not
    yet been displayed; alternatively, we could call XPutImage() for every
    row and not bother with the records-keeping.
  ---------------------------------------------------------------------------*/

    Trace((stderr, "beginning rpng2_x_display_row()\n"))

    if (rpng2_info.pass != prevpass) {
        if (pause_after_pass && rpng2_info.pass > 0) {
            XEvent e;
            KeySym k;

            fprintf(stderr,
              "%s:  end of pass %d of 7; click in image window to continue\n",
              PROGNAME, prevpass + 1);
            do
                XNextEvent(display, &e);
            while (!(e.type == ButtonPress && e.xbutton.button == Button1)
                   && !(e.type == KeyPress &&
                   ((k = XLookupKeysym(&e.xkey, 0)) == XK_q
                    || k == XK_Escape) )) ;
        }
        fprintf(stderr, "%s:  pass %d of 7\r", PROGNAME, rpng2_info.pass + 1);
        fflush(stderr);
        prevpass = rpng2_info.pass;
    }

    if (rows == 0)
        firstrow = row;   /* first row that is not yet displayed */

    ++rows;   /* count of rows received but not yet displayed */

/*---------------------------------------------------------------------------
    Aside from the use of the rpng2_info struct, the lack of an outer loop
    (over rows) and moving the XPutImage() call outside the "if (depth)"
    tests, this routine is identical to rpng_x_display_image() in the non-
    progressive version of the program.
  ---------------------------------------------------------------------------*/

    if (depth == 24 || depth == 32) {
        ulg red, green, blue;

        src = rpng2_info.image_data + row*rpng2_info.rowbytes;
        if (bg_image)
            src2 = bg_data + row*bg_rowbytes;
        dest = ximage->data + row*ximage_rowbytes;
        if (rpng2_info.channels == 3) {
            for (i = rpng2_info.width;  i > 0;  --i) {
                red   = *src++;
                green = *src++;
                blue  = *src++;
                pixel = (red   << RShift) |
                        (green << GShift) |
                        (blue  << BShift);
                /* recall that we set ximage->byte_order = MSBFirst above */
                /* GRR BUG:  this assumes bpp == 32, but may be 24: */
                *dest++ = (char)((pixel >> 24) & 0xff);
                *dest++ = (char)((pixel >> 16) & 0xff);
                *dest++ = (char)((pixel >>  8) & 0xff);
                *dest++ = (char)( pixel        & 0xff);
            }
        } else /* if (rpng2_info.channels == 4) */ {
            for (i = rpng2_info.width;  i > 0;  --i) {
                r = *src++;
                g = *src++;
                b = *src++;
                a = *src++;
                if (bg_image) {
                    bg_red   = *src2++;
                    bg_green = *src2++;
                    bg_blue  = *src2++;
                }
                if (a == 255) {
                    red   = r;
                    green = g;
                    blue  = b;
                } else if (a == 0) {
                    red   = bg_red;
                    green = bg_green;
                    blue  = bg_blue;
                } else {
                    /* this macro (from png.h) composites the foreground
                     * and background values and puts the result into the
                     * first argument */
                    alpha_composite(red,   r, a, bg_red);
                    alpha_composite(green, g, a, bg_green);
                    alpha_composite(blue,  b, a, bg_blue);
                }
                pixel = (red   << RShift) |
                        (green << GShift) |
                        (blue  << BShift);
                /* recall that we set ximage->byte_order = MSBFirst above */
                /* GRR BUG:  this assumes bpp == 32, but may be 24: */
                *dest++ = (char)((pixel >> 24) & 0xff);
                *dest++ = (char)((pixel >> 16) & 0xff);
                *dest++ = (char)((pixel >>  8) & 0xff);
                *dest++ = (char)( pixel        & 0xff);
            }
        }

    } else if (depth == 16) {
        ush red, green, blue;

        src = rpng2_info.row_pointers[row];
        if (bg_image)
            src2 = bg_data + row*bg_rowbytes;
        dest = ximage->data + row*ximage_rowbytes;
        if (rpng2_info.channels == 3) {
            for (i = rpng2_info.width;  i > 0;  --i) {
                red   = ((ush)(*src) << 8);
                ++src;
                green = ((ush)(*src) << 8);
                ++src;
                blue  = ((ush)(*src) << 8);
                ++src;
                pixel = ((red   >> RShift) & RMask) |
                        ((green >> GShift) & GMask) |
                        ((blue  >> BShift) & BMask);
                /* recall that we set ximage->byte_order = MSBFirst above */
                *dest++ = (char)((pixel >>  8) & 0xff);
                *dest++ = (char)( pixel        & 0xff);
            }
        } else /* if (rpng2_info.channels == 4) */ {
            for (i = rpng2_info.width;  i > 0;  --i) {
                r = *src++;
                g = *src++;
                b = *src++;
                a = *src++;
                if (bg_image) {
                    bg_red   = *src2++;
                    bg_green = *src2++;
                    bg_blue  = *src2++;
                }
                if (a == 255) {
                    red   = ((ush)r << 8);
                    green = ((ush)g << 8);
                    blue  = ((ush)b << 8);
                } else if (a == 0) {
                    red   = ((ush)bg_red   << 8);
                    green = ((ush)bg_green << 8);
                    blue  = ((ush)bg_blue  << 8);
                } else {
                    /* this macro (from png.h) composites the foreground
                     * and background values and puts the result back into
                     * the first argument (== fg byte here:  safe) */
                    alpha_composite(r, r, a, bg_red);
                    alpha_composite(g, g, a, bg_green);
                    alpha_composite(b, b, a, bg_blue);
                    red   = ((ush)r << 8);
                    green = ((ush)g << 8);
                    blue  = ((ush)b << 8);
                }
                pixel = ((red   >> RShift) & RMask) |
                        ((green >> GShift) & GMask) |
                        ((blue  >> BShift) & BMask);
                /* recall that we set ximage->byte_order = MSBFirst above */
                *dest++ = (char)((pixel >>  8) & 0xff);
                *dest++ = (char)( pixel        & 0xff);
            }
        }

    } else /* depth == 8 */ {

        /* GRR:  add 8-bit support */

    }


/*---------------------------------------------------------------------------
    Display after every 16 rows or when on one of last two rows.  (Region
    may include previously displayed lines due to interlacing--i.e., not
    contiguous.  Also, second-to-last row is final one in interlaced images
    with odd number of rows.)  For demos, flush (and delay) after every 16th
    row so "sparse" passes don't go twice as fast.
  ---------------------------------------------------------------------------*/

    if (demo_timing && (row - firstrow >= 16 || row >= rpng2_info.height-2)) {
        XPutImage(display, window, gc, ximage, 0, (int)firstrow, 0,
          (int)firstrow, rpng2_info.width, row - firstrow + 1);
        XFlush(display);
        rows = 0;
        usleep(usleep_duration);
    } else
    if (!demo_timing && ((rows & 0xf) == 0 || row >= rpng2_info.height-2)) {
        XPutImage(display, window, gc, ximage, 0, (int)firstrow, 0,
          (int)firstrow, rpng2_info.width, row - firstrow + 1);
        XFlush(display);
        rows = 0;
    }

}





static void rpng2_x_finish_display(void)
{
    Trace((stderr, "beginning rpng2_x_finish_display()\n"))

    /* last row has already been displayed by rpng2_x_display_row(), so we
     * have nothing to do here except set a flag and let the user know that
     * the image is done */

    rpng2_info.done = TRUE;
    printf(
      "Done.  Press Q, Esc or mouse button 1 (within image window) to quit.\n");
    fflush(stdout);
}





static void rpng2_x_cleanup(void)
{
    if (bg_image && bg_data) {
        free(bg_data);
        bg_data = NULL;
    }

    if (rpng2_info.image_data) {
        free(rpng2_info.image_data);
        rpng2_info.image_data = NULL;
    }

    if (rpng2_info.row_pointers) {
        free(rpng2_info.row_pointers);
        rpng2_info.row_pointers = NULL;
    }

    if (ximage) {
        if (ximage->data) {
            free(ximage->data);           /* we allocated it, so we free it */
            ximage->data = (char *)NULL;  /*  instead of XDestroyImage() */
        }
        XDestroyImage(ximage);
        ximage = NULL;
    }

    XFreeGC(display, gc);

    if (have_window)
        XDestroyWindow(display, window);

    if (have_colormap)
        XFreeColormap(display, colormap);

    if (have_nondefault_visual)
        XFree(visual_list);
}





static int rpng2_x_msb(ulg u32val)
{
    int i;

    for (i = 31;  i >= 0;  --i) {
        if (u32val & 0x80000000L)
            break;
        u32val <<= 1;
    }
    return i;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人在线网站| 色8久久人人97超碰香蕉987| 亚洲伦理在线免费看| 亚洲婷婷在线视频| 亚洲综合激情另类小说区| 久久精品久久99精品久久| 国产一区二区三区香蕉| 成人理论电影网| 91精品国产综合久久蜜臀| 日韩视频免费直播| 婷婷开心久久网| av高清久久久| 亚洲欧美色一区| 岛国av在线一区| 欧美aaa在线| 色噜噜狠狠成人网p站| 日韩在线一区二区三区| 99久久伊人网影院| 日韩精品专区在线影院重磅| 日韩有码一区二区三区| 亚洲欧洲中文日韩久久av乱码| 一本高清dvd不卡在线观看| 国产精品福利av| 成人精品国产免费网站| 国产欧美视频一区二区| 久久狠狠亚洲综合| 婷婷成人激情在线网| 亚洲黄色尤物视频| 亚洲日本在线视频观看| 中文字幕一区二区不卡| 91久久国产综合久久| 99久久久免费精品国产一区二区| 国产精品资源网| 中文字幕av一区二区三区免费看 | 日本美女一区二区| 欧美成人a视频| 国产成人免费视| 成人午夜视频福利| 一本色道久久综合亚洲91| 欧美在线一二三| 免费欧美日韩国产三级电影| 麻豆国产91在线播放| 中文字幕精品一区二区精品绿巨人| 国产精品拍天天在线| 欧美性xxxxx极品少妇| 国产乱色国产精品免费视频| 国产成人在线看| 在线看不卡av| 精品国产91九色蝌蚪| 色噜噜久久综合| 精品99一区二区三区| 国产精品国产自产拍高清av| 亚洲一区免费在线观看| 久久精品二区亚洲w码| 色综合久久中文字幕综合网| 欧美日韩一本到| 欧美性受xxxx黑人xyx性爽| 精品国产髙清在线看国产毛片| 中文无字幕一区二区三区 | 亚洲美女在线国产| 久久91精品国产91久久小草| 亚洲国产成人porn| 日韩国产精品久久| 一本一本大道香蕉久在线精品| 欧美成人艳星乳罩| 久久国产生活片100| 4hu四虎永久在线影院成人| 最近日韩中文字幕| 成人影视亚洲图片在线| 久久综合九色综合欧美就去吻| 欧美日韩国产精品自在自线| 国产麻豆精品视频| 欧美成人一区二区三区在线观看| 亚洲自拍都市欧美小说| 欧洲色大大久久| 亚洲精品伦理在线| 欧美色欧美亚洲另类二区| 亚洲精品一二三四区| 91色视频在线| 成人国产电影网| 最好看的中文字幕久久| 欧美少妇xxx| 久久国产精品99久久久久久老狼| 日韩一级黄色大片| 经典三级在线一区| 最新日韩在线视频| 欧美日韩成人综合| 国产一区二区中文字幕| 综合亚洲深深色噜噜狠狠网站| 91猫先生在线| 精品无人区卡一卡二卡三乱码免费卡| 精品国产一区二区三区久久影院| 国产一区二区三区免费| 亚洲三级在线免费| 日韩精品一区二区三区视频在线观看 | 色呦呦一区二区三区| 美女免费视频一区| 一区二区三区在线免费播放| 久久精品国产秦先生| 亚洲一级在线观看| 国产香蕉久久精品综合网| 日韩va亚洲va欧美va久久| 国产欧美久久久精品影院| 欧美精品丝袜中出| 亚洲一区二区三区在线| 欧美浪妇xxxx高跟鞋交| 99久久精品国产网站| 国产精品中文字幕日韩精品| 日韩av成人高清| 亚洲成人黄色影院| 欧日韩精品视频| 成人午夜在线播放| 美女尤物国产一区| 一区二区三区在线免费播放| 国产视频911| 久久综合狠狠综合久久综合88| www.欧美日韩国产在线| 国产剧情一区在线| 久久av资源网| 调教+趴+乳夹+国产+精品| 亚洲乱码国产乱码精品精小说| 日韩欧美国产wwwww| 日韩一区二区三区精品视频| 欧美性色黄大片手机版| 91精品办公室少妇高潮对白| 丁香六月综合激情| 国产精品系列在线播放| 久久99精品视频| 国产一区二区三区免费在线观看| 麻豆91在线播放| 国产精品一区二区无线| 国产精品一二三区在线| 国产一区在线视频| 国产白丝精品91爽爽久久| 亚洲最大的成人av| 亚洲二区视频在线| 久久国产精品区| av色综合久久天堂av综合| 91超碰这里只有精品国产| 日韩三级在线观看| 日本一区二区免费在线| 亚洲日本青草视频在线怡红院| 久久精品国产99国产| 成人高清免费观看| 欧美久久久久中文字幕| 久久久精品国产免费观看同学| 欧美色图天堂网| 久久久久久麻豆| 爽好久久久欧美精品| 另类小说欧美激情| 欧美人与z0zoxxxx视频| 国产情人综合久久777777| 综合自拍亚洲综合图不卡区| 国产91清纯白嫩初高中在线观看 | 一色桃子久久精品亚洲| 国产一区二区三区在线观看免费 | 中文欧美字幕免费| 日韩国产一二三区| 亚洲主播在线观看| 91啦中文在线观看| 久久先锋影音av| 久久国产剧场电影| 欧美日韩国产天堂| 一区二区三区电影在线播| 成人免费看片app下载| 日韩一区和二区| 日韩经典一区二区| 在线精品视频免费播放| 国产精品女人毛片| 成人丝袜视频网| 国产精品视频一二三区| 国产精品一区2区| 久久久久久夜精品精品免费| 精品一区二区三区免费| 欧美三级在线视频| 亚洲无人区一区| 欧美一区二区三区不卡| 免费成人美女在线观看| 欧美一区二区三区四区在线观看| 日韩成人av影视| 久久日韩精品一区二区五区| 激情小说欧美图片| 国产精品私人影院| 欧美精选一区二区| 国产精品久久午夜| 欧美一区二区视频在线观看| 国产一区不卡在线| 亚洲一区二区三区四区五区中文| 在线观看日韩电影| 韩国毛片一区二区三区| 中文字幕一区在线观看| 日韩三级精品电影久久久| 日韩综合小视频| 亚洲女子a中天字幕| 久久在线观看免费| 91精品免费在线观看| 成人精品高清在线| 国产不卡视频一区二区三区| 丝袜亚洲另类欧美综合| 亚洲欧洲综合另类|