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

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

?? rpng2-x.c

?? Borland C++BuilderT 6 Developer s Guide
?? C
?? 第 1 頁 / 共 4 頁
字號:

    if (window == None) {
        fprintf(stderr, "XCreateWindow() failed\n");
        return 2;
    } else
        have_window = TRUE;

    if (depth == 8)
        XSetWindowColormap(display, window, colormap);

    if (!XStringListToTextProperty(&window_name, 1, pWindowName))
        pWindowName = NULL;
    if (!XStringListToTextProperty(&icon_name, 1, pIconName))
        pIconName = NULL;

    /* OK if either hints allocation fails; XSetWMProperties() allows NULLs */

    if ((size_hints = XAllocSizeHints()) != NULL) {
        /* window will not be resizable */
        size_hints->flags = PMinSize | PMaxSize;
        size_hints->min_width = size_hints->max_width = (int)rpng2_info.width;
        size_hints->min_height = size_hints->max_height =
          (int)rpng2_info.height;
    }

    if ((wm_hints = XAllocWMHints()) != NULL) {
        wm_hints->initial_state = NormalState;
        wm_hints->input = True;
     /* wm_hints->icon_pixmap = icon_pixmap; */
        wm_hints->flags = StateHint | InputHint  /* | IconPixmapHint */ ;
    }

    XSetWMProperties(display, window, pWindowName, pIconName, NULL, 0,
      size_hints, wm_hints, NULL);

    XMapWindow(display, window);

    gc = XCreateGC(display, window, 0, &gcvalues);

/*---------------------------------------------------------------------------
    Allocate memory for the X- and display-specific version of the image.
  ---------------------------------------------------------------------------*/

    if (depth == 24 || depth == 32) {
        xdata = (uch *)malloc(4*rpng2_info.width*rpng2_info.height);
        pad = 32;
    } else if (depth == 16) {
        xdata = (uch *)malloc(2*rpng2_info.width*rpng2_info.height);
        pad = 16;
    } else /* depth == 8 */ {
        xdata = (uch *)malloc(rpng2_info.width*rpng2_info.height);
        pad = 8;
    }

    if (!xdata) {
        fprintf(stderr, PROGNAME ":  unable to allocate image memory\n");
        return 4;
    }

    ximage = XCreateImage(display, visual, depth, ZPixmap, 0,
      (char *)xdata, rpng2_info.width, rpng2_info.height, pad, 0);

    if (!ximage) {
        fprintf(stderr, PROGNAME ":  XCreateImage() failed\n");
        free(xdata);
        return 3;
    }

    /* to avoid testing the byte order every pixel (or doubling the size of
     * the drawing routine with a giant if-test), we arbitrarily set the byte
     * order to MSBFirst and let Xlib worry about inverting things on little-
     * endian machines (e.g., Linux/x86, old VAXen, etc.)--this is not the
     * most efficient approach (the giant if-test would be better), but in
     * the interest of clarity, we'll take the easy way out... */

    ximage->byte_order = MSBFirst;

/*---------------------------------------------------------------------------
    Fill window with the specified background color (default is black) or
    faked "background image" (but latter is disabled if 8-bit; gradients
    just waste palette entries).
  ---------------------------------------------------------------------------*/

    if (bg_image)
        rpng2_x_load_bg_image();    /* resets bg_image if fails */

    if (!bg_image) {
        if (depth == 24 || depth == 32) {
            bg_pixel = (bg_red   << RShift) |
                       (bg_green << GShift) |
                       (bg_blue  << BShift);
        } else if (depth == 16) {
            bg_pixel = (((bg_red   << 8) >> RShift) & RMask) |
                       (((bg_green << 8) >> GShift) & GMask) |
                       (((bg_blue  << 8) >> BShift) & BMask);
        } else /* depth == 8 */ {

            /* GRR:  add 8-bit support */

        }
        XSetForeground(display, gc, bg_pixel);
        XFillRectangle(display, window, gc, 0, 0, rpng2_info.width,
          rpng2_info.height);
    }

/*---------------------------------------------------------------------------
    Wait for first Expose event to do any drawing, then flush and return.
  ---------------------------------------------------------------------------*/

    do
        XNextEvent(display, &e);
    while (e.type != Expose || e.xexpose.count);

    XFlush(display);

    return 0;

} /* end function rpng2_x_create_window() */





static int rpng2_x_load_bg_image(void)
{
    uch *src;
    char *dest;
    uch r1, r2, g1, g2, b1, b2;
    uch r1_inv, r2_inv, g1_inv, g2_inv, b1_inv, b2_inv;
    int k, hmax, max;
    int xidx, yidx, yidx_max = (bgscale-1);
    int even_odd_vert, even_odd_horiz, even_odd;
    int invert_gradient2 = (bg[pat].type & 0x08);
    int invert_column;
    int ximage_rowbytes = ximage->bytes_per_line;
    ulg i, row;
    ulg pixel;

/*---------------------------------------------------------------------------
    Allocate buffer for fake background image to be used with transparent
    images; if this fails, revert to plain background color.
  ---------------------------------------------------------------------------*/

    bg_rowbytes = 3 * rpng2_info.width;
    bg_data = (uch *)malloc(bg_rowbytes * rpng2_info.height);
    if (!bg_data) {
        fprintf(stderr, PROGNAME
          ":  unable to allocate memory for background image\n");
        bg_image = 0;
        return 1;
    }

/*---------------------------------------------------------------------------
    Vertical gradients (ramps) in NxN squares, alternating direction and
    colors (N == bgscale).
  ---------------------------------------------------------------------------*/

    if ((bg[pat].type & 0x07) == 0) {
        uch r1_min  = rgb[bg[pat].rgb1_min].r;
        uch g1_min  = rgb[bg[pat].rgb1_min].g;
        uch b1_min  = rgb[bg[pat].rgb1_min].b;
        uch r2_min  = rgb[bg[pat].rgb2_min].r;
        uch g2_min  = rgb[bg[pat].rgb2_min].g;
        uch b2_min  = rgb[bg[pat].rgb2_min].b;
        int r1_diff = rgb[bg[pat].rgb1_max].r - r1_min;
        int g1_diff = rgb[bg[pat].rgb1_max].g - g1_min;
        int b1_diff = rgb[bg[pat].rgb1_max].b - b1_min;
        int r2_diff = rgb[bg[pat].rgb2_max].r - r2_min;
        int g2_diff = rgb[bg[pat].rgb2_max].g - g2_min;
        int b2_diff = rgb[bg[pat].rgb2_max].b - b2_min;

        for (row = 0;  row < rpng2_info.height;  ++row) {
            yidx = (int)(row % bgscale);
            even_odd_vert = (int)((row / bgscale) & 1);

            r1 = r1_min + (r1_diff * yidx) / yidx_max;
            g1 = g1_min + (g1_diff * yidx) / yidx_max;
            b1 = b1_min + (b1_diff * yidx) / yidx_max;
            r1_inv = r1_min + (r1_diff * (yidx_max-yidx)) / yidx_max;
            g1_inv = g1_min + (g1_diff * (yidx_max-yidx)) / yidx_max;
            b1_inv = b1_min + (b1_diff * (yidx_max-yidx)) / yidx_max;

            r2 = r2_min + (r2_diff * yidx) / yidx_max;
            g2 = g2_min + (g2_diff * yidx) / yidx_max;
            b2 = b2_min + (b2_diff * yidx) / yidx_max;
            r2_inv = r2_min + (r2_diff * (yidx_max-yidx)) / yidx_max;
            g2_inv = g2_min + (g2_diff * (yidx_max-yidx)) / yidx_max;
            b2_inv = b2_min + (b2_diff * (yidx_max-yidx)) / yidx_max;

            dest = (char *)bg_data + row*bg_rowbytes;
            for (i = 0;  i < rpng2_info.width;  ++i) {
                even_odd_horiz = (int)((i / bgscale) & 1);
                even_odd = even_odd_vert ^ even_odd_horiz;
                invert_column =
                  (even_odd_horiz && (bg[pat].type & 0x10));
                if (even_odd == 0) {        /* gradient #1 */
                    if (invert_column) {
                        *dest++ = r1_inv;
                        *dest++ = g1_inv;
                        *dest++ = b1_inv;
                    } else {
                        *dest++ = r1;
                        *dest++ = g1;
                        *dest++ = b1;
                    }
                } else {                    /* gradient #2 */
                    if ((invert_column && invert_gradient2) ||
                        (!invert_column && !invert_gradient2))
                    {
                        *dest++ = r2;       /* not inverted or */
                        *dest++ = g2;       /*  doubly inverted */
                        *dest++ = b2;
                    } else {
                        *dest++ = r2_inv;
                        *dest++ = g2_inv;   /* singly inverted */
                        *dest++ = b2_inv;
                    }
                }
            }
        }

/*---------------------------------------------------------------------------
    Soft gradient-diamonds with scale = bgscale.  Code contributed by Adam
    M. Costello.
  ---------------------------------------------------------------------------*/

    } else if ((bg[pat].type & 0x07) == 1) {

        hmax = (bgscale-1)/2;   /* half the max weight of a color */
        max = 2*hmax;           /* the max weight of a color */

        r1 = rgb[bg[pat].rgb1_max].r;
        g1 = rgb[bg[pat].rgb1_max].g;
        b1 = rgb[bg[pat].rgb1_max].b;
        r2 = rgb[bg[pat].rgb2_max].r;
        g2 = rgb[bg[pat].rgb2_max].g;
        b2 = rgb[bg[pat].rgb2_max].b;

        for (row = 0;  row < rpng2_info.height;  ++row) {
            yidx = (int)(row % bgscale);
            if (yidx > hmax)
                yidx = bgscale-1 - yidx;
            dest = (char *)bg_data + row*bg_rowbytes;
            for (i = 0;  i < rpng2_info.width;  ++i) {
                xidx = (int)(i % bgscale);
                if (xidx > hmax)
                    xidx = bgscale-1 - xidx;
                k = xidx + yidx;
                *dest++ = (k*r1 + (max-k)*r2) / max;
                *dest++ = (k*g1 + (max-k)*g2) / max;
                *dest++ = (k*b1 + (max-k)*b2) / max;
            }
        }

/*---------------------------------------------------------------------------
    Radial "starburst" with azimuthal sinusoids; [eventually number of sinu-
    soids will equal bgscale?].  This one is slow but very cool.  Code con-
    tributed by Pieter S. van der Meulen (originally in Smalltalk).
  ---------------------------------------------------------------------------*/

    } else if ((bg[pat].type & 0x07) == 2) {
        uch ch;
        int ii, x, y, hw, hh, grayspot;
        double freq, rotate, saturate, gray, intensity;
        double angle=0.0, aoffset=0.0, maxDist, dist;
        double red=0.0, green=0.0, blue=0.0, hue, s, v, f, p, q, t;

        fprintf(stderr, "%s:  computing radial background...",
          PROGNAME);
        fflush(stderr);

        hh = (int)(rpng2_info.height / 2);
        hw = (int)(rpng2_info.width / 2);

        /* variables for radial waves:
         *   aoffset:  number of degrees to rotate hue [CURRENTLY NOT USED]
         *   freq:  number of color beams originating from the center
         *   grayspot:  size of the graying center area (anti-alias)
         *   rotate:  rotation of the beams as a function of radius
         *   saturate:  saturation of beams' shape azimuthally
         */
        angle = CLIP(angle, 0.0, 360.0);
        grayspot = CLIP(bg[pat].bg_gray, 1, (hh + hw));
        freq = MAX((double)bg[pat].bg_freq, 0.0);
        saturate = (double)bg[pat].bg_bsat * 0.1;
        rotate = (double)bg[pat].bg_brot * 0.1;
        gray = 0.0;
        intensity = 0.0;
        maxDist = (double)((hw*hw) + (hh*hh));

        for (row = 0;  row < rpng2_info.height;  ++row) {
            y = (int)(row - hh);
            dest = (char *)bg_data + row*bg_rowbytes;
            for (i = 0;  i < rpng2_info.width;  ++i) {
                x = (int)(i - hw);
                angle = (x == 0)? PI_2 : atan((double)y / (double)x);
                gray = (double)MAX(ABS(y), ABS(x)) / grayspot;
                gray = MIN(1.0, gray);
                dist = (double)((x*x) + (y*y)) / maxDist;
                intensity = cos((angle+(rotate*dist*PI)) * freq) *
                  gray * saturate;
                intensity = (MAX(MIN(intensity,1.0),-1.0) + 1.0) * 0.5;
                hue = (angle + PI) * INV_PI_360 + aoffset;
                s = gray * ((double)(ABS(x)+ABS(y)) / (double)(hw + hh));
                s = MIN(MAX(s,0.0), 1.0);
                v = MIN(MAX(intensity,0.0), 1.0);

                if (s == 0.0) {
                    ch = (uch)(v * 255.0);
                    *dest++ = ch;
                    *dest++ = ch;
                    *dest++ = ch;
                } else {
                    if ((hue < 0.0) || (hue >= 360.0))
                        hue -= (((int)(hue / 360.0)) * 360.0);
                    hue /= 60.0;
                    ii = (int)hue;
                    f = hue - (double)ii;
                    p = (1.0 - s) * v;
                    q = (1.0 - (s * f)) * v;
                    t = (1.0 - (s * (1.0 - f))) * v;
                    if      (ii == 0) { red = v; green = t; blue = p; }
                    else if (ii == 1) { red = q; green = v; blue = p; }
                    else if (ii == 2) { red = p; green = v; blue = t; }
                    else if (ii == 3) { red = p; green = q; blue = v; }
                    else if (ii == 4) { red = t; green = p; blue = v; }
                    else if (ii == 5) { red = v; green = p; blue = q; }
                    *dest++ = (uch)(red * 255.0);
                    *dest++ = (uch)(green * 255.0);
                    *dest++ = (uch)(blue * 255.0);
                }
            }
        }
        fprintf(stderr, "done.\n");
        fflush(stderr);
    }

/*---------------------------------------------------------------------------
    Blast background image to display buffer before beginning PNG decode.
  ---------------------------------------------------------------------------*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷av一区二区| 91欧美激情一区二区三区成人| 午夜精品福利一区二区三区av| 1000部国产精品成人观看| 中文字幕永久在线不卡| 亚洲美女精品一区| 日韩电影一区二区三区四区| 看片的网站亚洲| 国产99精品在线观看| 在线一区二区三区| 亚洲精品在线网站| 一区二区三区在线观看欧美| 狠狠色综合播放一区二区| 国产伦精一区二区三区| 首页国产丝袜综合| 国产一区 二区| 欧美日韩亚洲综合在线 | 最近中文字幕一区二区三区| 五月婷婷综合激情| 91影视在线播放| 久久综合久久鬼色| 亚洲国产cao| 色先锋久久av资源部| 久久综合九色欧美综合狠狠| 午夜精品一区二区三区免费视频| 捆绑调教美女网站视频一区| 欧美系列亚洲系列| 亚洲欧美色综合| 成人免费观看男女羞羞视频| 欧美久久免费观看| 亚洲二区视频在线| 在线观看网站黄不卡| 18涩涩午夜精品.www| 国产成人午夜精品影院观看视频 | 懂色av一区二区三区免费观看| 欧美美女黄视频| 蜜臀av一区二区在线观看| 精品视频色一区| 久久久精品一品道一区| 国产中文字幕精品| 中文字幕欧美区| 91香蕉视频mp4| 亚洲视频免费在线| 不卡高清视频专区| 亚洲五码中文字幕| 日韩欧美一区二区在线视频| 精品亚洲欧美一区| 欧美国产视频在线| 在线观看视频一区二区欧美日韩 | 国产乱人伦精品一区二区在线观看 | 8x8x8国产精品| 国产米奇在线777精品观看| 国产精品免费久久久久| 欧美高清精品3d| 国产成人av影院| 午夜久久久影院| 国产精品午夜在线| 91精品国产91热久久久做人人| 国产成人av电影免费在线观看| 亚洲人成网站色在线观看| 欧美一区二区在线观看| 不卡视频免费播放| 国模一区二区三区白浆| 亚洲成人7777| 中文av一区二区| 欧美mv和日韩mv的网站| 91福利小视频| 99re成人精品视频| 国产不卡视频在线播放| 美女视频黄频大全不卡视频在线播放| 亚洲三级电影网站| 国产精品丝袜在线| 日本一区二区三区电影| 欧美岛国在线观看| 日韩一区二区三区视频在线| 欧美三级视频在线观看| 91在线你懂得| 色先锋久久av资源部| 91麻豆成人久久精品二区三区| 国产成人午夜片在线观看高清观看| 日韩av网站在线观看| 亚洲综合精品久久| 亚洲bt欧美bt精品777| 亚洲色图色小说| 一区二区高清免费观看影视大全| 国产精品免费久久| 亚洲一区影音先锋| 日韩高清电影一区| 美国三级日本三级久久99| 久久99蜜桃精品| 成人动漫中文字幕| 欧美性色综合网| 日韩欧美黄色影院| 国产精品久久久久桃色tv| 亚洲欧美日韩一区二区| 天天操天天色综合| 国产精品一区专区| 在线欧美小视频| 2024国产精品| 亚洲免费在线视频| 激情综合五月天| 91视频观看免费| 精品国产免费一区二区三区四区 | 成人午夜激情在线| 91麻豆精品国产91久久久使用方法 | 九九精品一区二区| 日本韩国欧美在线| 国产调教视频一区| 蜜桃传媒麻豆第一区在线观看| 国产精品一区专区| 日韩一区二区不卡| 亚洲一区视频在线| 99精品久久免费看蜜臀剧情介绍| 欧美一区二区三区免费观看视频| 1区2区3区欧美| 粉嫩久久99精品久久久久久夜| 欧美一区二区精美| 亚洲成人免费在线观看| 色综合天天综合色综合av| 中日韩av电影| 国产在线看一区| 日韩精品一区在线| 免费看欧美美女黄的网站| 欧美综合天天夜夜久久| 国产精品入口麻豆九色| 国产高清在线观看免费不卡| 7777精品久久久大香线蕉| 伊人色综合久久天天| 久久精品噜噜噜成人av农村| 91精品国产综合久久福利| 亚洲国产日日夜夜| 欧美日韩国产一区| 日本美女一区二区三区视频| 91精品国产综合久久久蜜臀粉嫩 | 精品免费国产二区三区| 久久国产视频网| 中日韩免费视频中文字幕| 91在线porny国产在线看| 亚洲自拍与偷拍| 日韩欧美一级精品久久| 国产乱人伦偷精品视频免下载 | 9久草视频在线视频精品| 一区二区欧美国产| 欧美成人乱码一区二区三区| 另类小说欧美激情| 国产精品久久久久久久久免费相片 | 久久久91精品国产一区二区精品| 国产一区二区三区观看| 亚洲另类色综合网站| 日韩一级二级三级| av电影天堂一区二区在线观看| 夜夜嗨av一区二区三区中文字幕 | 国产乱码精品一区二区三区忘忧草| 久久久久久一二三区| 欧美日韩成人在线| 成人h精品动漫一区二区三区| 一区二区三区成人在线视频| 亚洲精品一区二区三区精华液| 色吧成人激情小说| 丰满少妇久久久久久久| 久久电影网站中文字幕| 亚洲图片一区二区| 亚洲欧美一区二区不卡| 久久久99免费| 精品国产sm最大网站免费看| 欧美三级视频在线观看| 色噜噜狠狠成人网p站| 成人免费视频视频| 岛国一区二区在线观看| 午夜精品久久久久影视| 亚洲品质自拍视频| 一区二区三区四区精品在线视频| 国产精品网站在线| 国产精品久久久久久久久免费桃花 | 亚洲激情成人在线| 国产精品嫩草影院av蜜臀| 日本一区免费视频| 日韩毛片一二三区| 亚洲自拍欧美精品| 日韩av中文在线观看| 久久精品免费看| 国产成人a级片| 一本久道中文字幕精品亚洲嫩| av亚洲产国偷v产偷v自拍| 91国产免费观看| 欧美三级蜜桃2在线观看| 欧美日韩一区二区欧美激情 | 亚洲bt欧美bt精品| 国内精品免费**视频| 成人精品gif动图一区| 粗大黑人巨茎大战欧美成人| 色综合久久综合中文综合网| 欧美日韩中文精品| 久久久99精品久久| 亚洲国产视频直播| 国内精品视频一区二区三区八戒 | 欧美国产视频在线| 亚洲午夜激情网站| 国产夫妻精品视频| 欧美一区二区女人|