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

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

?? rpng2-x.c

?? Borland C++BuilderT 6 Developer s Guide
?? C
?? 第 1 頁 / 共 4 頁
字號:
            else {
                pat = atoi(*argv) - 1;
                if (pat < 0 || pat >= num_bgpat)
                    ++error;
                else {
                    bg_image = TRUE;
                    have_bg = FALSE;
                }
            }
        } else if (!strncmp(*argv, "-usleep", 2)) {
            if (!*++argv)
                ++error;
            else {
                usleep_duration = (ulg)atol(*argv);
                demo_timing = TRUE;
            }
        } else if (!strncmp(*argv, "-pause", 2)) {
            pause_after_pass = TRUE;
        } else if (!strncmp(*argv, "-timing", 2)) {
            timing = TRUE;
        } else {
            if (**argv != '-') {
                filename = *argv;
                if (argv[1])   /* shouldn't be any more args after filename */
                    ++error;
            } else
                ++error;   /* not expecting any other options */
        }
    }

    if (!filename) {
        ++error;
    } else if (!(infile = fopen(filename, "rb"))) {
        fprintf(stderr, PROGNAME ":  can't open PNG file [%s]\n", filename);
        ++error;
    } else {
        incount = fread(inbuf, 1, INBUFSIZE, infile);
        if (incount < 8 || !readpng2_check_sig(inbuf, 8)) {
            fprintf(stderr, PROGNAME
              ":  [%s] is not a PNG file: incorrect signature\n",
              filename);
            ++error;
        } else if ((rc = readpng2_init(&rpng2_info)) != 0) {
            switch (rc) {
                case 2:
                    fprintf(stderr, PROGNAME
                      ":  [%s] has bad IHDR (libpng longjmp)\n",
                      filename);
                    break;
                case 4:
                    fprintf(stderr, PROGNAME ":  insufficient memory\n");
                    break;
                default:
                    fprintf(stderr, PROGNAME
                      ":  unknown readpng2_init() error\n");
                    break;
            }
            ++error;
        } else {
            display = XOpenDisplay(displayname);
            if (!display) {
                readpng2_cleanup(&rpng2_info);
                fprintf(stderr, PROGNAME ":  can't open X display [%s]\n",
                  displayname? displayname : "default");
                ++error;
            }
        }
        if (error)
            fclose(infile);
    }


    /* usage screen */

    if (error) {
        fprintf(stderr, "\n%s %s:  %s\n", PROGNAME, VERSION, appname);
        readpng2_version_info();
        fprintf(stderr, "\n"
          "Usage:  %s [-display xdpy] [-gamma exp] [-bgcolor bg | -bgpat pat]\n"
          "        %*s [-usleep dur | -timing] [-pause] file.png\n\n"
          "    xdpy\tname of the target X display (e.g., ``hostname:0'')\n"
          "    exp \ttransfer-function exponent (``gamma'') of the display\n"
          "\t\t  system in floating-point format (e.g., ``%.1f''); equal\n"
          "\t\t  to the product of the lookup-table exponent (varies)\n"
          "\t\t  and the CRT exponent (usually 2.2); must be positive\n"
          "    bg  \tdesired background color in 7-character hex RGB format\n"
          "\t\t  (e.g., ``#ff7700'' for orange:  same as HTML colors);\n"
          "\t\t  used with transparent images; overrides -bgpat\n"
          "    pat \tdesired background pattern number (1-%d); used with\n"
          "\t\t  transparent images; overrides -bgcolor\n"
          "    dur \tduration in microseconds to wait after displaying each\n"
          "\t\t  row (for demo purposes)\n"
          "    -timing\tenables delay for every block read, to simulate modem\n"
          "\t\t  download of image (~36 Kbps)\n"
          "    -pause\tpauses after displaying each pass until key pressed\n"
          "\nPress Q, Esc or mouse button 1 (within image window, after image\n"
          "is displayed) to quit.\n"
          "\n", PROGNAME, strlen(PROGNAME), " ", default_display_exponent,
          num_bgpat);
        exit(1);
    }


    /* set the title-bar string, but make sure buffer doesn't overflow */

    alen = strlen(appname);
    flen = strlen(filename);
    if (alen + flen + 3 > 1023)
        sprintf(titlebar, "%s:  ...%s", appname, filename+(alen+flen+6-1023));
    else
        sprintf(titlebar, "%s:  %s", appname, filename);


    /* set some final rpng2_info variables before entering main data loop */

    if (have_bg) {
        unsigned r, g, b;   /* this approach quiets compiler warnings */

        sscanf(bgstr+1, "%2x%2x%2x", &r, &g, &b);
        rpng2_info.bg_red   = (uch)r;
        rpng2_info.bg_green = (uch)g;
        rpng2_info.bg_blue  = (uch)b;
    } else
        rpng2_info.need_bgcolor = TRUE;

    rpng2_info.done = FALSE;
    rpng2_info.mainprog_init = rpng2_x_init;
    rpng2_info.mainprog_display_row = rpng2_x_display_row;
    rpng2_info.mainprog_finish_display = rpng2_x_finish_display;


    /* OK, this is the fun part:  call readpng2_decode_data() at the start of
     * the loop to deal with our first buffer of data (read in above to verify
     * that the file is a PNG image), then loop through the file and continue
     * calling the same routine to handle each chunk of data.  It in turn
     * passes the data to libpng, which will invoke one or more of our call-
     * backs as decoded data become available.  We optionally call sleep() for
     * one second per iteration to simulate downloading the image via an analog
     * modem. */

    for (;;) {
        Trace((stderr, "about to call readpng2_decode_data()\n"))
        if (readpng2_decode_data(&rpng2_info, inbuf, incount))
            ++error;
        Trace((stderr, "done with readpng2_decode_data()\n"))
        if (error || feof(infile) || rpng2_info.done)
            break;
        if (timing)
            sleep(1);
        incount = fread(inbuf, 1, INBUFSIZE, infile);
    }


    /* clean up PNG stuff and report any decoding errors */

    fclose(infile);
    Trace((stderr, "about to call readpng2_cleanup()\n"))
    readpng2_cleanup(&rpng2_info);

    if (error) {
        fprintf(stderr, PROGNAME ":  libpng error while decoding PNG image\n");
        exit(3);
    }


    /* wait for the user to tell us when to quit */

    do
        XNextEvent(display, &e);
    while (!(e.type == ButtonPress && e.xbutton.button == Button1) &&
           !(e.type == KeyPress &&    /*  v--- or 1 for shifted keys */
             ((k = XLookupKeysym(&e.xkey, 0)) == XK_q || k == XK_Escape) ));


    /* we're done:  clean up all image and X resources and go away */

    Trace((stderr, "about to call rpng2_x_cleanup()\n"))
    rpng2_x_cleanup();

    return 0;
}





/* this function is called by readpng2_info_callback() in readpng2.c, which
 * in turn is called by libpng after all of the pre-IDAT chunks have been
 * read and processed--i.e., we now have enough info to finish initializing */

static void rpng2_x_init(void)
{
    ulg i;
    ulg rowbytes = rpng2_info.rowbytes;

    Trace((stderr, "beginning rpng2_x_init()\n"))
    Trace((stderr, "  rowbytes = %ld\n", rpng2_info.rowbytes))
    Trace((stderr, "  width  = %ld\n", rpng2_info.width))
    Trace((stderr, "  height = %ld\n", rpng2_info.height))

    rpng2_info.image_data = (uch *)malloc(rowbytes * rpng2_info.height);
    if (!rpng2_info.image_data) {
        readpng2_cleanup(&rpng2_info);
        return;
    }

    rpng2_info.row_pointers = (uch **)malloc(rpng2_info.height * sizeof(uch *));
    if (!rpng2_info.row_pointers) {
        free(rpng2_info.image_data);
        rpng2_info.image_data = NULL;
        readpng2_cleanup(&rpng2_info);
        return;
    }

    for (i = 0;  i < rpng2_info.height;  ++i)
        rpng2_info.row_pointers[i] = rpng2_info.image_data + i*rowbytes;


    /* do the basic X initialization stuff, make the window, and fill it with
     * the user-specified, file-specified or default background color or
     * pattern */

    if (rpng2_x_create_window()) {
        readpng2_cleanup(&rpng2_info);
        return;
    }
}





static int rpng2_x_create_window(void)
{
    ulg bg_red   = rpng2_info.bg_red;
    ulg bg_green = rpng2_info.bg_green;
    ulg bg_blue  = rpng2_info.bg_blue;
    ulg bg_pixel = 0L;
    ulg attrmask;
    int need_colormap = FALSE;
    int screen, pad;
    uch *xdata;
    Window root;
    XEvent e;
    XGCValues gcvalues;
    XSetWindowAttributes attr;
    XSizeHints *size_hints;
    XTextProperty windowName, *pWindowName = &windowName;
    XTextProperty iconName, *pIconName = &iconName;
    XVisualInfo visual_info;
    XWMHints *wm_hints;


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

    screen = DefaultScreen(display);
    depth = DisplayPlanes(display, screen);
    root = RootWindow(display, screen);

#ifdef DEBUG
    XSynchronize(display, True);
#endif

    if (depth != 16 && depth != 24 && depth != 32) {
        int visuals_matched = 0;

        Trace((stderr, "default depth is %d:  checking other visuals\n",
          depth))

        /* 24-bit first */
        visual_info.screen = screen;
        visual_info.depth = 24;
        visual_list = XGetVisualInfo(display,
          VisualScreenMask | VisualDepthMask, &visual_info, &visuals_matched);
        if (visuals_matched == 0) {
/* GRR:  add 15-, 16- and 32-bit TrueColor visuals (also DirectColor?) */
            fprintf(stderr, "default screen depth %d not supported, and no"
              " 24-bit visuals found\n", depth);
            return 2;
        }
        Trace((stderr, "XGetVisualInfo() returned %d 24-bit visuals\n",
          visuals_matched))
        visual = visual_list[0].visual;
        depth = visual_list[0].depth;
/*
        colormap_size = visual_list[0].colormap_size;
        visual_class = visual->class;
        visualID = XVisualIDFromVisual(visual);
 */
        have_nondefault_visual = TRUE;
        need_colormap = TRUE;
    } else {
        XMatchVisualInfo(display, screen, depth, TrueColor, &visual_info);
        visual = visual_info.visual;
    }

    RMask = visual->red_mask;
    GMask = visual->green_mask;
    BMask = visual->blue_mask;

/* GRR:  add/check 8-bit support */
    if (depth == 8 || need_colormap) {
        colormap = XCreateColormap(display, root, visual, AllocNone);
        if (!colormap) {
            fprintf(stderr, "XCreateColormap() failed\n");
            return 2;
        }
        have_colormap = TRUE;
        if (depth == 8)
            bg_image = FALSE;   /* gradient just wastes palette entries */
    }
    if (depth == 15 || depth == 16) {
        RShift = 15 - rpng2_x_msb(RMask);    /* these are right-shifts */
        GShift = 15 - rpng2_x_msb(GMask);
        BShift = 15 - rpng2_x_msb(BMask);
    } else if (depth > 16) {
        RShift = rpng2_x_msb(RMask) - 7;     /* these are left-shifts */
        GShift = rpng2_x_msb(GMask) - 7;
        BShift = rpng2_x_msb(BMask) - 7;
    }
    if (depth >= 15 && (RShift < 0 || GShift < 0 || BShift < 0)) {
        fprintf(stderr, "rpng2 internal logic error:  negative X shift(s)!\n");
        return 2;
    }

/*---------------------------------------------------------------------------
    Finally, create the window.
  ---------------------------------------------------------------------------*/

    attr.backing_store = Always;
    attr.event_mask = ExposureMask | KeyPressMask | ButtonPressMask;
    attrmask = CWBackingStore | CWEventMask;
    if (have_nondefault_visual) {
        attr.colormap = colormap;
        attr.background_pixel = 0;
        attr.border_pixel = 1;
        attrmask |= CWColormap | CWBackPixel | CWBorderPixel;
    }

    window = XCreateWindow(display, root, 0, 0, rpng2_info.width,
      rpng2_info.height, 0, depth, InputOutput, visual, attrmask, &attr);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡影院免费观看| 亚洲成人自拍偷拍| 久久夜色精品国产欧美乱极品| 日本精品视频一区二区三区| 国产精品一级黄| 国产精品一品二品| 高清视频一区二区| 粉嫩蜜臀av国产精品网站| 国产91富婆露脸刺激对白| 风流少妇一区二区| 97国产精品videossex| 色哟哟欧美精品| 欧美日韩一级二级| 91精品国产免费| 国产欧美日韩综合| 国产精品国产三级国产aⅴ无密码| 久久久九九九九| 国产精品国产自产拍高清av| 亚洲欧美色图小说| 性欧美疯狂xxxxbbbb| 奇米色777欧美一区二区| 久久精品免费看| 成人精品gif动图一区| eeuss影院一区二区三区 | 国产一区高清在线| 成人免费高清在线观看| 91麻豆免费视频| 日韩一区二区精品在线观看| 国产丝袜美腿一区二区三区| 亚洲色图清纯唯美| 日韩一区欧美二区| 成人一区二区视频| 制服丝袜中文字幕一区| 国产午夜精品久久久久久久| 亚洲欧洲综合另类| 精品一区二区在线播放| 大桥未久av一区二区三区中文| 91行情网站电视在线观看高清版| 欧美天堂一区二区三区| 精品久久久久久久久久久久包黑料| 6080午夜不卡| 中文在线免费一区三区高中清不卡| 亚洲视频免费看| 久久www免费人成看片高清| 国产精品538一区二区在线| 欧美性淫爽ww久久久久无| 精品久久久久av影院| 亚洲毛片av在线| 精品一区二区三区在线观看| 成人免费看的视频| 欧美tk—视频vk| 亚洲综合久久久久| 成人免费视频播放| 精品国产网站在线观看| 亚洲综合精品久久| 成人av高清在线| 精品奇米国产一区二区三区| 亚洲精品伦理在线| 国产精品一级在线| 日韩免费在线观看| 五月天欧美精品| 成人高清免费观看| 久久久91精品国产一区二区精品| 亚洲成a人v欧美综合天堂下载 | 久久午夜色播影院免费高清 | 久久先锋资源网| 奇米色一区二区| 欧美日韩国产片| 日韩美女啊v在线免费观看| 国产一区 二区 三区一级| 欧美精品乱码久久久久久 | 亚洲国产精品影院| 99天天综合性| 国产精品护士白丝一区av| 国产精品一区一区三区| 精品成a人在线观看| 日本免费新一区视频| 欧美视频在线观看一区二区| 亚洲欧美aⅴ...| 99精品桃花视频在线观看| 久久久久99精品国产片| 国产91在线看| 亚洲欧洲精品一区二区精品久久久| 狠狠色丁香久久婷婷综| 欧美tk—视频vk| 国产一区 二区| 国产精品视频观看| yourporn久久国产精品| 亚洲国产精品精华液ab| www.亚洲国产| 一区二区三区在线观看欧美 | 日韩成人精品在线观看| 91精品国产麻豆国产自产在线 | 精品国产一区二区三区不卡| 免费成人在线影院| 欧美成人aa大片| 国产精品小仙女| 国产精品色眯眯| 色综合欧美在线| 午夜精品福利一区二区三区蜜桃| 欧美一区二区久久| 国产毛片一区二区| 亚洲视频免费观看| 制服丝袜亚洲色图| 国产综合色精品一区二区三区| 欧美成人女星排行榜| 国产精品一二三区在线| 亚洲欧美成aⅴ人在线观看| 欧美性感一类影片在线播放| 免费欧美高清视频| 亚洲国产精品ⅴa在线观看| 91丨porny丨在线| 日本aⅴ精品一区二区三区| 久久精品视频一区二区三区| 97精品视频在线观看自产线路二| 亚洲尤物视频在线| 国产色91在线| 欧美日韩午夜精品| 国产凹凸在线观看一区二区| 亚洲一区二区精品3399| 2024国产精品| 在线观看亚洲成人| 久久精品国产免费看久久精品| 成人欧美一区二区三区小说| 日韩午夜在线观看视频| 99热精品国产| 激情五月婷婷综合| 亚洲国产综合人成综合网站| 久久老女人爱爱| 欧美日韩免费视频| 99视频一区二区三区| 精品在线播放免费| 亚洲成人资源网| 日韩理论片一区二区| 欧美成人精精品一区二区频| 欧美日韩久久一区| 99视频在线精品| 成人免费毛片高清视频| 黄页网站大全一区二区| 亚洲成av人在线观看| 久久久久国产成人精品亚洲午夜| 欧美日韩成人激情| 欧美影院精品一区| 99久久精品免费观看| 美女国产一区二区三区| 亚洲成人免费看| 亚洲制服丝袜在线| 亚洲色图制服丝袜| 国产精品福利一区| 国产欧美一二三区| 国产日韩欧美综合一区| 精品国产精品网麻豆系列| 在线播放欧美女士性生活| 在线免费不卡电影| 色呦呦网站一区| 国产精品中文欧美| 首页国产欧美久久| 日韩二区在线观看| 亚洲成人免费av| 亚洲va欧美va国产va天堂影院| 亚洲欧美日本韩国| 亚洲精品你懂的| 伊人夜夜躁av伊人久久| 亚洲乱码中文字幕综合| 亚洲人成影院在线观看| 精品成a人在线观看| 亚洲国产岛国毛片在线| 欧美精品一区二区三区高清aⅴ | 成人的网站免费观看| 国产精品系列在线播放| 高清beeg欧美| 99精品在线观看视频| 在线精品视频免费观看| 欧美日韩国产在线观看| 欧美三级乱人伦电影| 91精品国产综合久久久久久久久久 | 99久久亚洲一区二区三区青草| 国产成人午夜高潮毛片| 国产成人aaa| 91视频国产资源| 精品污污网站免费看| 日韩欧美一区在线观看| 日本一区二区高清| 亚洲国产日韩综合久久精品| 丝袜亚洲精品中文字幕一区| 奇米精品一区二区三区在线观看| 国产麻豆日韩欧美久久| 风间由美性色一区二区三区| 色拍拍在线精品视频8848| 欧美一区二区三区在线视频| 337p日本欧洲亚洲大胆色噜噜| 国产精品久久久久9999吃药| 亚洲午夜久久久久中文字幕久| 午夜精品视频在线观看| 国产一区二区视频在线| 99精品国产91久久久久久 | 蜜臀久久99精品久久久久久9| 韩国成人精品a∨在线观看| 色偷偷成人一区二区三区91 | 亚洲人成网站精品片在线观看|