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

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

?? rpng2-win.c

?? A good png library for mulit-platform
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*---------------------------------------------------------------------------   rpng2 - progressive-model PNG display program                rpng2-win.c   This program decodes and displays PNG files progressively, as if it were   a web browser (though the front end is only set up to read from files).   It supports gamma correction, user-specified background colors, and user-   specified background patterns (for transparent images).  This version is   for 32-bit Windows; it may compile under 16-bit Windows with a little   tweaking (or maybe not).  Thanks to Adam Costello and Pieter S. van der   Meulen for the "diamond" and "radial waves" patterns, respectively.   to do:    - handle quoted command-line args (especially filenames with spaces)    - finish resizable checkerboard-gradient (sizes 4-128?)    - use %.1023s to simplify truncation of title-bar string?    - have minimum window width:  oh well  ---------------------------------------------------------------------------   Changelog:    - 1.01:  initial public release    - 1.02:  fixed cut-and-paste error in usage screen (oops...)    - 1.03:  modified to allow abbreviated options    - 1.04:  removed bogus extra argument from usage fprintf() [Glenn R-P?];              fixed command-line parsing bug    - 1.10:  enabled "message window"/console (thanks to David Geldreich)    - 1.20:  added runtime MMX-enabling/disabling and new -mmx* options    - 1.21:  made minor tweak to usage screen to fit within 25-line console  ---------------------------------------------------------------------------      Copyright (c) 1998-2001 Greg Roelofs.  All rights reserved.      This software is provided "as is," without warranty of any kind,      express or implied.  In no event shall the author or contributors      be held liable for any damages arising in any way from the use of      this software.      Permission is granted to anyone to use this software for any purpose,      including commercial applications, and to alter it and redistribute      it freely, subject to the following restrictions:      1. Redistributions of source code must retain the above copyright         notice, disclaimer, and this list of conditions.      2. Redistributions in binary form must reproduce the above copyright         notice, disclaimer, and this list of conditions in the documenta-         tion and/or other materials provided with the distribution.      3. All advertising materials mentioning features or use of this         software must display the following acknowledgment:            This product includes software developed by Greg Roelofs            and contributors for the book, "PNG: The Definitive Guide,"            published by O'Reilly and Associates.  ---------------------------------------------------------------------------*/#define PROGNAME  "rpng2-win"#define LONGNAME  "Progressive PNG Viewer for Windows"#define VERSION   "1.21 of 29 June 2001"#include <stdio.h>#include <stdlib.h>#include <string.h>#include <setjmp.h>    /* for jmpbuf declaration in readpng2.h */#include <time.h>#include <math.h>      /* only for PvdM background code */#include <windows.h>#include <conio.h>     /* only for _getch() *//* all for PvdM background code: */#ifndef PI#  define PI             3.141592653589793238#endif#define PI_2             (PI*0.5)#define INV_PI_360       (360.0 / PI)#define MAX(a,b)         (a>b?a:b)#define MIN(a,b)         (a<b?a:b)#define CLIP(a,min,max)  MAX(min,MIN((a),max))#define ABS(a)           ((a)<0?-(a):(a))#define CLIP8P(c)        MAX(0,(MIN((c),255)))   /* 8-bit pos. integer (uch) */#define ROUNDF(f)        ((int)(f + 0.5))#define rgb1_max   bg_freq#define rgb1_min   bg_gray#define rgb2_max   bg_bsat#define rgb2_min   bg_brot/* #define DEBUG */     /* this enables the Trace() macros */#include "readpng2.h"   /* typedefs, common macros, readpng2 prototypes *//* could just include png.h, but this macro is the only thing we need * (name and typedefs changed to local versions); note that side effects * only happen with alpha (which could easily be avoided with * "ush acopy = (alpha);") */#define alpha_composite(composite, fg, alpha, bg) {               \    ush temp = ((ush)(fg)*(ush)(alpha) +                          \                (ush)(bg)*(ush)(255 - (ush)(alpha)) + (ush)128);  \    (composite) = (uch)((temp + (temp >> 8)) >> 8);               \}#define INBUFSIZE 4096   /* with pseudo-timing on (1 sec delay/block), this                          *  block size corresponds roughly to a download                          *  speed 10% faster than theoretical 33.6K maximum                          *  (assuming 8 data bits, 1 stop bit and no other                          *  overhead) *//* local prototypes */static void       rpng2_win_init(void);static int        rpng2_win_create_window(void);static int        rpng2_win_load_bg_image(void);static void       rpng2_win_display_row(ulg row);static void       rpng2_win_finish_display(void);static void       rpng2_win_cleanup(void);LRESULT CALLBACK  rpng2_win_wndproc(HWND, UINT, WPARAM, LPARAM);static char titlebar[1024], *window_name = titlebar;static char *progname = PROGNAME;static char *appname = LONGNAME;static char *icon_name = PROGNAME;    /* GRR:  not (yet) used */static char *filename;static FILE *infile;static mainprog_info rpng2_info;static uch inbuf[INBUFSIZE];static int incount;static int pat = 6;         /* must be less than num_bgpat */static int bg_image = 0;static int bgscale = 16;static ulg bg_rowbytes;static uch *bg_data;static struct rgb_color {    uch r, g, b;} rgb[] = {    {  0,   0,   0},    /*  0:  black */    {255, 255, 255},    /*  1:  white */    {173, 132,  57},    /*  2:  tan */    { 64, 132,   0},    /*  3:  medium green */    {189, 117,   1},    /*  4:  gold */    {253, 249,   1},    /*  5:  yellow */    {  0,   0, 255},    /*  6:  blue */    {  0,   0, 120},    /*  7:  medium blue */    {255,   0, 255},    /*  8:  magenta */    { 64,   0,  64},    /*  9:  dark magenta */    {255,   0,   0},    /* 10:  red */    { 64,   0,   0},    /* 11:  dark red */    {255, 127,   0},    /* 12:  orange */    {192,  96,   0},    /* 13:  darker orange */    { 24,  60,   0},    /* 14:  dark green-yellow */    { 85, 125, 200}     /* 15:  ice blue */};/* not used for now, but should be for error-checking:static int num_rgb = sizeof(rgb) / sizeof(struct rgb_color); *//*    This whole struct is a fairly cheesy way to keep the number of    command-line options to a minimum.  The radial-waves background    type is a particularly poor fit to the integer elements of the    struct...but a few macros and a little fixed-point math will do    wonders for ya.    type bits:       F E D C B A 9 8 7 6 5 4 3 2 1 0                             | | | | |                             | | +-+-+-- 0 = sharp-edged checkerboard                             | |         1 = soft diamonds                             | |         2 = radial waves                             | |       3-7 = undefined                             | +-- gradient #2 inverted?                             +-- alternating columns inverted? */static struct background_pattern {    ush type;    int rgb1_max, rgb1_min;     /* or bg_freq, bg_gray */    int rgb2_max, rgb2_min;     /* or bg_bsat, bg_brot (both scaled by 10)*/} bg[] = {    {0+8,   2,0,  1,15},        /* checkered:  tan/black vs. white/ice blue */    {0+24,  2,0,  1,0},         /* checkered:  tan/black vs. white/black */    {0+8,   4,5,  0,2},         /* checkered:  gold/yellow vs. black/tan */    {0+8,   4,5,  0,6},         /* checkered:  gold/yellow vs. black/blue */    {0,     7,0,  8,9},         /* checkered:  deep blue/black vs. magenta */    {0+8,  13,0,  5,14},        /* checkered:  orange/black vs. yellow */    {0+8,  12,0, 10,11},        /* checkered:  orange/black vs. red */    {1,     7,0,  8,0},         /* diamonds:  deep blue/black vs. magenta */    {1,    12,0, 11,0},         /* diamonds:  orange vs. dark red */    {1,    10,0,  7,0},         /* diamonds:  red vs. medium blue */    {1,     4,0,  5,0},         /* diamonds:  gold vs. yellow */    {1,     3,0,  0,0},         /* diamonds:  medium green vs. black */    {2,    16, 100,  20,   0},  /* radial:  ~hard radial color-beams */    {2,    18, 100,  10,   2},  /* radial:  soft, curved radial color-beams */    {2,    16, 256, 100, 250},  /* radial:  very tight spiral */    {2, 10000, 256,  11,   0}   /* radial:  dipole-moire' (almost fractal) */};static int num_bgpat = sizeof(bg) / sizeof(struct background_pattern);/* Windows-specific global variables (could go in struct, but messy...) */static ulg wimage_rowbytes;static uch *dib;static uch *wimage_data;static BITMAPINFOHEADER *bmih;static HWND global_hwnd;static HINSTANCE global_hInst;static int global_showmode;int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, PSTR cmd, int showmode){    char *args[1024];                 /* arbitrary limit, but should suffice */    char **argv = args;    char *p, *q, *bgstr = NULL;    int argc = 0;    int rc, alen, flen;    int error = 0;    int timing = FALSE;    int have_bg = FALSE;    double LUT_exponent;              /* just the lookup table */    double CRT_exponent = 2.2;        /* just the monitor */    double default_display_exponent;  /* whole display system */    MSG msg;    /* First initialize a few things, just to be sure--memset takes care of     * default background color (black), booleans (FALSE), pointers (NULL),     * etc. */    global_hInst = hInst;    global_showmode = showmode;    filename = (char *)NULL;    memset(&rpng2_info, 0, sizeof(mainprog_info));    /* Next reenable console output, which normally goes to the bit bucket     * for windowed apps.  Closing the console window will terminate the     * app.  Thanks to David.Geldreich@realviz.com for supplying the magical     * incantation. */    AllocConsole();    freopen("CONOUT$", "a", stderr);    freopen("CONOUT$", "a", stdout);    /* Set the default value for our display-system exponent, i.e., the     * product of the CRT exponent and the exponent corresponding to     * the frame-buffer's lookup table (LUT), if any.  This is not an     * exhaustive list of LUT values (e.g., OpenStep has a lot of weird     * ones), but it should cover 99% of the current possibilities.  And     * yes, these ifdefs are completely wasted in a Windows program... */#if defined(NeXT)    /* third-party utilities can modify the default LUT exponent */    LUT_exponent = 1.0 / 2.2;    /*    if (some_next_function_that_returns_gamma(&next_gamma))        LUT_exponent = 1.0 / next_gamma;     */#elif defined(sgi)    LUT_exponent = 1.0 / 1.7;    /* there doesn't seem to be any documented function to     * get the "gamma" value, so we do it the hard way */    infile = fopen("/etc/config/system.glGammaVal", "r");    if (infile) {        double sgi_gamma;        fgets(tmpline, 80, infile);        fclose(infile);        sgi_gamma = atof(tmpline);        if (sgi_gamma > 0.0)            LUT_exponent = 1.0 / sgi_gamma;    }#elif defined(Macintosh)    LUT_exponent = 1.8 / 2.61;    /*    if (some_mac_function_that_returns_gamma(&mac_gamma))        LUT_exponent = mac_gamma / 2.61;     */#else    LUT_exponent = 1.0;   /* assume no LUT:  most PCs */#endif    /* the defaults above give 1.0, 1.3, 1.5 and 2.2, respectively: */    default_display_exponent = LUT_exponent * CRT_exponent;    /* If the user has set the SCREEN_GAMMA environment variable as suggested     * (somewhat imprecisely) in the libpng documentation, use that; otherwise     * use the default value we just calculated.  Either way, the user may     * override this via a command-line option. */    if ((p = getenv("SCREEN_GAMMA")) != NULL)        rpng2_info.display_exponent = atof(p);    else        rpng2_info.display_exponent = default_display_exponent;    /* Windows really hates command lines, so we have to set up our own argv.     * Note that we do NOT bother with quoted arguments here, so don't use     * filenames with spaces in 'em! */    argv[argc++] = PROGNAME;    p = cmd;    for (;;) {        if (*p == ' ')            while (*++p == ' ')                ;        /* now p points at the first non-space after some spaces */        if (*p == '\0')            break;    /* nothing after the spaces:  done */        argv[argc++] = q = p;        while (*q && *q != ' ')            ++q;        /* now q points at a space or the end of the string */        if (*q == '\0')            break;    /* last argv already terminated; quit */        *q = '\0';    /* change space to terminator */        p = q + 1;    }    argv[argc] = NULL;   /* terminate the argv array itself */    /* Now parse the command line for options and the PNG filename. */    while (*++argv && !error) {        if (!strncmp(*argv, "-gamma", 2)) {            if (!*++argv)                ++error;            else {                rpng2_info.display_exponent = atof(*argv);                if (rpng2_info.display_exponent <= 0.0)                    ++error;            }        } else if (!strncmp(*argv, "-bgcolor", 4)) {            if (!*++argv)                ++error;            else {                bgstr = *argv;                if (strlen(bgstr) != 7 || bgstr[0] != '#')                    ++error;                else {                    have_bg = TRUE;                    bg_image = FALSE;                }            }        } else if (!strncmp(*argv, "-bgpat", 4)) {            if (!*++argv)                ++error;            else {                pat = atoi(*argv) - 1;                if (pat < 0 || pat >= num_bgpat)                    ++error;                else {                    bg_image = TRUE;                    have_bg = FALSE;                }            }        } else if (!strncmp(*argv, "-timing", 2)) {            timing = TRUE;#if (defined(__i386__) || defined(_M_IX86))        } else if (!strncmp(*argv, "-nommxfilters", 7)) {            rpng2_info.nommxfilters = TRUE;        } else if (!strncmp(*argv, "-nommxcombine", 7)) {            rpng2_info.nommxcombine = TRUE;        } else if (!strncmp(*argv, "-nommxinterlace", 7)) {            rpng2_info.nommxinterlace = TRUE;        } else if (!strcmp(*argv, "-nommx")) {            rpng2_info.nommxfilters = TRUE;            rpng2_info.nommxcombine = TRUE;            rpng2_info.nommxinterlace = TRUE;#endif        } else {            if (**argv != '-') {                filename = *argv;                if (argv[1])   /* shouldn't be any more args after filename */                    ++error;            } else                ++error;   /* not expecting any other options */        }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产午夜亚洲精品不卡| 色呦呦一区二区三区| 日韩欧美一二三四区| 日本亚洲电影天堂| 精品国产乱码久久| 丁香啪啪综合成人亚洲小说| 18成人在线视频| 欧美日韩国产首页| 国模冰冰炮一区二区| 国产精品国产a| 日本一区免费视频| 91久久一区二区| 视频一区二区中文字幕| 久久综合久久综合亚洲| 成人在线综合网| 一区二区三区在线播| 日韩欧美一区电影| 成人天堂资源www在线| 亚洲最新在线观看| 精品国产三级电影在线观看| av福利精品导航| 婷婷综合五月天| 国产亚洲综合在线| 欧美性极品少妇| 韩国av一区二区三区四区| 国产精品不卡视频| 91精品国产入口| 成人午夜av电影| 日本视频在线一区| 中文字幕一区二区不卡| 91精品国产一区二区三区香蕉| 国产成人亚洲精品青草天美| 亚洲成人一二三| 亚洲国产精品黑人久久久| 欧美老年两性高潮| 国产成人亚洲精品狼色在线| 偷拍亚洲欧洲综合| 国产精品色哟哟| 日韩一二三四区| 欧美性生活大片视频| 国产精品一二三四五| 五月天欧美精品| 综合久久久久久| 久久毛片高清国产| 欧美日韩精品二区第二页| 99久久精品免费| 国精品**一区二区三区在线蜜桃| 亚洲一区国产视频| 国产精品动漫网站| 久久免费午夜影院| 精品免费99久久| 欧美精品亚洲一区二区在线播放| 99久久精品免费精品国产| 国产精品影视天天线| 亚洲成年人网站在线观看| 最新国产成人在线观看| 国产亚洲精久久久久久| 日韩精品综合一本久道在线视频| 欧美视频一区二区| 色狠狠一区二区| 91网站视频在线观看| 成人晚上爱看视频| 成人午夜视频在线观看| 国产精品18久久久久久久久久久久| 日本视频一区二区| 免费欧美日韩国产三级电影| 亚洲亚洲精品在线观看| 亚洲免费在线播放| 亚洲精品欧美二区三区中文字幕| 国产精品久久久久久久蜜臀| 国产偷国产偷亚洲高清人白洁 | 亚洲欧美日韩电影| 国产精品久久久久久久久搜平片| 国产清纯美女被跳蛋高潮一区二区久久w | 久久久久久久久久美女| 久久一二三国产| 精品国产一区二区三区四区四| 日韩欧美一区二区视频| 日韩免费电影网站| 精品成人免费观看| 久久天天做天天爱综合色| 欧美精品一区二区三区蜜桃| 久久精品一区四区| 国产欧美精品一区二区色综合| 国产偷v国产偷v亚洲高清| 国产亚洲短视频| 亚洲色图19p| 一区二区三区 在线观看视频| 亚洲自拍偷拍图区| 亚洲一区二区三区不卡国产欧美| 亚洲国产一区在线观看| 婷婷开心激情综合| 日韩国产欧美在线观看| 免费在线观看一区| 国产精品一级黄| 91亚洲资源网| 欧美日韩国产一级片| 日韩免费在线观看| 国产欧美日韩中文久久| 一区二区三区四区不卡在线| 一区二区三区波多野结衣在线观看| 亚洲国产va精品久久久不卡综合| 天堂av在线一区| 经典一区二区三区| av激情综合网| 日韩午夜在线影院| 国产精品欧美极品| 亚洲高清视频在线| 国产中文字幕精品| 在线观看免费亚洲| 精品国产一区二区三区不卡 | 国产婷婷精品av在线| 亚洲蜜桃精久久久久久久| 亚洲国产综合91精品麻豆| 久久国产精品区| 91亚洲资源网| 日韩美女视频一区二区在线观看| 国产精品乱码妇女bbbb| 亚洲成人手机在线| 国产美女在线精品| 在线观看日韩高清av| 久久先锋影音av| 一区二区三区视频在线看| 美女诱惑一区二区| 在线一区二区三区四区五区 | 精品国产乱码91久久久久久网站| 国产精品综合一区二区| 欧美在线视频全部完| 久久久精品影视| 图片区小说区区亚洲影院| 成人精品视频一区二区三区尤物| 欧美另类久久久品| 国产精品传媒入口麻豆| 久久草av在线| 欧美在线免费观看视频| 国产精品日韩成人| 麻豆精品一区二区| 欧美日韩亚州综合| 国产精品进线69影院| 国产综合成人久久大片91| 欧美日韩激情在线| 亚洲精品少妇30p| 风流少妇一区二区| 日韩精品一区二区三区在线播放| 亚洲在线一区二区三区| 成人免费av资源| 久久久av毛片精品| 琪琪一区二区三区| 欧美日韩免费不卡视频一区二区三区| 欧美国产精品一区二区| 精品一区二区日韩| 欧美人狂配大交3d怪物一区| 中文字幕一区二区三区在线观看| 韩国女主播成人在线观看| 56国语精品自产拍在线观看| 一区二区三区在线视频观看| 99久久免费视频.com| 国产亚洲欧美激情| 国产在线视频精品一区| 精品国产乱码久久久久久影片| 日韩激情视频在线观看| 欧美在线视频你懂得| 亚洲国产日韩一区二区| 欧美在线观看视频一区二区三区 | 亚洲bt欧美bt精品| 在线看国产一区| 一区二区三区在线影院| 在线视频欧美精品| 亚洲电影激情视频网站| 欧美亚洲禁片免费| 亚洲大片在线观看| 6080亚洲精品一区二区| 青娱乐精品视频| 欧美一级一级性生活免费录像| 日韩专区一卡二卡| 日韩精品一区二区三区三区免费| 久久精品国产亚洲5555| 亚洲精品一区二区三区福利 | 精品卡一卡二卡三卡四在线| 狠狠色狠狠色合久久伊人| 久久免费看少妇高潮| 成人一区在线观看| 亚洲欧美日韩在线播放| 欧美日韩亚洲国产综合| 麻豆精品国产传媒mv男同| 2014亚洲片线观看视频免费| 高清国产一区二区| 国产精品毛片大码女人| 91视频观看视频| 亚洲图片欧美色图| 精品国产一区二区三区久久久蜜月 | 成人天堂资源www在线| 综合婷婷亚洲小说| 欧美福利视频导航| 国产精品亚洲成人| 亚洲人精品午夜| 日韩久久久精品| va亚洲va日韩不卡在线观看| 亚洲超丰满肉感bbw| 亚洲精品在线观|