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

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

?? libmng_pixels.c

?? 一款最完整的工業組態軟源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* ************************************************************************** */
/* *             For conditions of distribution and use,                    * */
/* *                see copyright notice in libmng.h                        * */
/* ************************************************************************** */
/* *                                                                        * */
/* * project   : libmng                                                     * */
/* * file      : libmng_pixels.c           copyright (c) 2000-2004 G.Juyn   * */
/* * version   : 1.0.8                                                      * */
/* *                                                                        * */
/* * purpose   : Pixel-row management routines (implementation)             * */
/* *                                                                        * */
/* * author    : G.Juyn                                                     * */
/* *                                                                        * */
/* * comment   : implementation of the pixel-row management routines        * */
/* *                                                                        * */
/* *             the dual alpha-composing for RGBA/BGRA/etc output-canvas'  * */
/* *             is based on the Note on Compositing chapter of the         * */
/* *             DOH-3 draft, noted to me by Adam M. Costello               * */
/* *                                                                        * */
/* * changes   : 0.5.1 - 05/08/2000 - G.Juyn                                * */
/* *             - changed strict-ANSI stuff                                * */
/* *             0.5.1 - 05/11/2000 - G.Juyn                                * */
/* *             - added callback error-reporting support                   * */
/* *             0.5.1 - 05/12/2000 - G.Juyn                                * */
/* *             - changed trace to macro for callback error-reporting      * */
/* *                                                                        * */
/* *             0.5.2 - 05/22/2000 - G.Juyn                                * */
/* *             - added JNG support                                        * */
/* *             0.5.2 - 05/30/2000 - G.Juyn                                * */
/* *             - fixed minor bugs 16-bit pixel-handling                   * */
/* *             - added delta-image row-processing routines                * */
/* *             0.5.2 - 06/02/2000 - G.Juyn                                * */
/* *             - fixed endian support (hopefully)                         * */
/* *             0.5.2 - 06/03/2000 - G.Juyn                                * */
/* *             - fixed makeup for Linux gcc compile                       * */
/* *             0.5.2 - 06/05/2000 - G.Juyn                                * */
/* *             - implemented app bkgd restore routines                    * */
/* *             - implemented RGBA8, ARGB8, BGRA8 & ABGR8 display routines * */
/* *             - added support for RGB8_A8 canvasstyle                    * */
/* *             0.5.2 - 06/09/2000 - G.Juyn                                * */
/* *             - fixed alpha-handling for alpha canvasstyles              * */
/* *                                                                        * */
/* *             0.5.3 - 06/16/2000 - G.Juyn                                * */
/* *             - changed progressive-display processing                   * */
/* *             0.5.3 - 06/17/2000 - G.Juyn                                * */
/* *             - changed to support delta-images                          * */
/* *             - optimized some store_xxx routines                        * */
/* *             0.5.3 - 06/20/2000 - G.Juyn                                * */
/* *             - fixed nasty bug with embedded PNG after delta-image      * */
/* *             0.5.3 - 06/24/2000 - G.Juyn                                * */
/* *             - fixed problem with 16-bit GA format                      * */
/* *             0.5.3 - 06/25/2000 - G.Juyn                                * */
/* *             - fixed problem with cheap transparency for 4-bit gray     * */
/* *             - fixed display_xxxx routines for interlaced images        * */
/* *             0.5.3 - 06/28/2000 - G.Juyn                                * */
/* *             - fixed compiler-warning for non-initialized iB variable   * */
/* *                                                                        * */
/* *             0.9.1 - 07/05/2000 - G.Juyn                                * */
/* *             - fixed mandatory BACK color to be opaque                  * */
/* *                                                                        * */
/* *             0.9.2 - 07/31/2000 - G.Juyn                                * */
/* *             - B110547 - fixed bug in interlace code                    * */
/* *             0.9.2 - 08/05/2000 - G.Juyn                                * */
/* *             - changed file-prefixes                                    * */
/* *                                                                        * */
/* *             0.9.3 - 08/20/2000 - G.Juyn                                * */
/* *             - fixed app-supplied background restore                    * */
/* *             0.9.3 - 08/26/2000 - G.Juyn                                * */
/* *             - added MAGN chunk                                         * */
/* *             0.9.3 - 09/07/2000 - G.Juyn                                * */
/* *             - added support for new filter_types                       * */
/* *             0.9.3 - 09/30/2000 - G.Juyn                                * */
/* *             - fixed MAGN rounding errors (thanks Matthias!)            * */
/* *             0.9.3 - 10/10/2000 - G.Juyn                                * */
/* *             - fixed alpha-blending for RGBA canvasstyle                * */
/* *             0.9.3 - 10/11/2000 - G.Juyn                                * */
/* *             - fixed alpha-blending for other alpha-canvasstyles        * */
/* *             0.9.3 - 10/16/2000 - G.Juyn                                * */
/* *             - added optional support for bKGD for PNG images           * */
/* *             - added support for JDAA                                   * */
/* *             0.9.3 - 10/17/2000 - G.Juyn                                * */
/* *             - fixed support for bKGD                                   * */
/* *             0.9.3 - 10/19/2000 - G.Juyn                                * */
/* *             - implemented delayed delta-processing                     * */
/* *             0.9.3 - 10/28/2000 - G.Juyn                                * */
/* *             - fixed tRNS processing for gray-image < 8-bits            * */
/* *                                                                        * */
/* *             0.9.4 - 12/16/2000 - G.Juyn                                * */
/* *             - fixed mixup of data- & function-pointers (thanks Dimitri)* */
/* *             0.9.4 -  1/18/2001 - G.Juyn                                * */
/* *             - removed "old" MAGN methods 3 & 4                         * */
/* *             - added "new" MAGN methods 3, 4 & 5                        * */
/* *             - removed test filter-methods 1 & 65                       * */
/* *                                                                        * */
/* *             1.0.1 - 04/21/2001 - G.Juyn (code by G.Kelly)              * */
/* *             - added BGRA8 canvas with premultiplied alpha              * */
/* *             1.0.1 - 04/25/2001 - G.Juyn                                * */
/* *             - moved mng_clear_cms to libmng_cms                        * */
/* *                                                                        * */
/* *             1.0.2 - 06/25/2001 - G.Juyn                                * */
/* *             - added option to turn off progressive refresh             * */
/* *                                                                        * */
/* *             1.0.4 - 11/04/2001 - G.Juyn                                * */
/* *             - fixed possible compile-problem in cleanup_rowproc        * */
/* *             1.0.4 - 06/22/2002 - G.Juyn                                * */
/* *             - B558212 - off by one error                               * */
/* *             - MNG subimage alpha composite wrong for rgba8 images      * */
/* *                                                                        * */
/* *             1.0.5 - 08/07/2002 - G.Juyn                                * */
/* *             - added test-option for PNG filter method 193 (=no filter) * */
/* *             1.0.5 - 08/15/2002 - G.Juyn                                * */
/* *             - completed PROM support                                   * */
/* *             - completed delta-image support                            * */
/* *             1.0.5 - 08/16/2002 - G.Juyn                                * */
/* *             - completed MAGN support (16-bit functions)                * */
/* *             1.0.5 - 08/19/2002 - G.Juyn                                * */
/* *             - B597134 - libmng pollutes the linker namespace           * */
/* *             1.0.5 - 09/19/2002 - G.Juyn                                * */
/* *             - optimized restore-background for bKGD cases              * */
/* *             1.0.5 - 09/20/2002 - G.Juyn                                * */
/* *             - finished support for BACK image & tiling                 * */
/* *             1.0.5 - 09/22/2002 - G.Juyn                                * */
/* *             - added bgrx8 canvas (filler byte)                         * */
/* *             1.0.5 - 09/23/2002 - G.Juyn                                * */
/* *             - added compose over/under routines for PAST processing    * */
/* *             - added flip & tile routines for PAST processing           * */
/* *                                                                        * */
/* *             1.0.6 - 03/09/2003 - G.Juyn                                * */
/* *             - hiding 12-bit JPEG stuff                                 * */
/* *             1.0.6 - 05/11/2003 - Glenn RP                              * */
/* *             - added size-optimization COMPOSE routine usage            * */
/* *             1.0.6 - 05/11/2003 - G. Juyn                               * */
/* *             - added conditionals around canvas update routines         * */
/* *             1.0.6 - 05/25/2003 - Glenn RP                              * */
/* *             - added size-optimization DIV255B8 routine usage           * */
/* *             1.0.6 - 06/09/2003 - G. R-P                                * */
/* *             - added conditionals around 8-bit magn routines            * */
/* *             1.0.6 - 07/07/2003 - G. R-P                                * */
/* *             - removed conditionals around 8-bit magn routines          * */
/* *             - added MNG_NO_16BIT_SUPPORT and MNG_NO_DELTA_PNG          * */
/* *               conditionals                                             * */
/* *             - reversed many loops to use decrementing counter          * */
/* *             - combined init functions                                  * */
/* *             - converted some switches to array references              * */
/* *             1.0.6 - 07/29/2003 - G.Juyn                                * */
/* *             - fixed duplicate for-loop                                 * */
/* *             1.0.6 - 07/29/2003 - G.R-P                                 * */
/* *             - added SKIPCHUNK conditionals around PAST chunk support   * */
/* *             - fixed "FOOTPRINT_COMPOSEIV" typo (now "FOOTPRINT_DIV")   * */
/* *             1.0.6 - 08/17/2003 - G.R-P                                 * */
/* *             - added more conditionals around "promote" functions       * */
/* *                                                                        * */
/* *             1.0.7 - 11/27/2003 - R.A                                   * */
/* *             - added CANVAS_RGB565 and CANVAS_BGR565                    * */
/* *             1.0.7 - 12/06/2003 - R.A                                   * */
/* *             - added CANVAS_RGBA565 and CANVAS_BGRA565                  * */
/* *             1.0.7 - 01/25/2004 - J.S                                   * */
/* *             - added premultiplied alpha canvas' for RGBA, ARGB, ABGR   * */
/* *             1.0.7 - 03/08/2004 - G.R-P                                 * */
/* *             - added more conditionals around 16-bit-supporting code    * */
/* *             1.0.7 - 03/09/2004 - G.Juyn                                * */
/* *             - fixed bug in promote_g8_g8 with 16bit support off        * */
/* *             1.0.7 - 03/09/2004 - G.R-P                                 * */
/* *             - more optimizations with 16bit support off                * */
/* *             1.0.7 - 03/10/2004 - G.Juyn                                * */
/* *             - fixed some warnings for 16bit optimizations              * */
/* *             1.0.7 - 03/21/2004 - G.Juyn                                * */
/* *             - fixed some 64-bit platform compiler warnings             * */
/* *                                                                        * */
/* *             1.0.8 - 06/20/2004 - G.Juyn                                * */
/* *             - some speed optimizations (thanks to John Stiles)         * */
/* *             1.0.8 - 08/01/2004 - G.Juyn                                * */
/* *             - added support for 3+byte pixelsize for JPEG's            * */
/* *                                                                        * */
/* ************************************************************************** */

#include "libmng.h"
#include "libmng_data.h"
#include "libmng_error.h"
#include "libmng_trace.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "libmng_objects.h"
#include "libmng_object_prc.h"
#include "libmng_memory.h"
#include "libmng_cms.h"
#include "libmng_filter.h"
#include "libmng_pixels.h"

#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
#pragma option -A                      /* force ANSI-C */
#endif

/* ************************************************************************** */

#ifdef MNG_INCLUDE_DISPLAY_PROCS

/* TODO: magnification & canvas-positioning/-clipping */

/* TODO: major optimization of pixel-loops by using assembler (?) */

/* ************************************************************************** */
/* *                                                                        * */
/* * Interlace tables                                                       * */
/* *                                                                        * */
/* ************************************************************************** */

MNG_LOCAL mng_uint32 const interlace_row      [7] = { 0, 0, 4, 0, 2, 0, 1 };
MNG_LOCAL mng_uint32 const interlace_rowskip  [7] = { 8, 8, 8, 4, 4, 2, 2 };
MNG_LOCAL mng_uint32 const interlace_col      [7] = { 0, 4, 0, 2, 0, 1, 0 };
MNG_LOCAL mng_uint32 const interlace_colskip  [7] = { 8, 8, 4, 4, 2, 2, 1 };
MNG_LOCAL mng_uint32 const interlace_roundoff [7] = { 7, 7, 3, 3, 1, 1, 0 };
MNG_LOCAL mng_uint32 const interlace_divider  [7] = { 3, 3, 2, 2, 1, 1, 0 };

/* ************************************************************************** */
/* *                                                                        * */
/* * Alpha composing macros                                                 * */
/* * the code below is slightly modified from the libpng package            * */
/* * the original was last optimized by Greg Roelofs & Mark Adler           * */
/* *                                                                        * */
/* ************************************************************************** */

#define MNG_COMPOSE8(RET,FG,ALPHA,BG) {                                    \
       mng_uint16 iH = (mng_uint16)((mng_uint16)(FG) * (mng_uint16)(ALPHA) \
                        + (mng_uint16)(BG)*(mng_uint16)(255 -              \
                          (mng_uint16)(ALPHA)) + (mng_uint16)128);         \
       (RET) = (mng_uint8)((iH + (iH >> 8)) >> 8); }

#define MNG_COMPOSE16(RET,FG,ALPHA,BG) {                                   \
       mng_uint32 iH = (mng_uint32)((mng_uint32)(FG) * (mng_uint32)(ALPHA) \
                        + (mng_uint32)(BG)*(mng_uint32)(65535L -           \
                          (mng_uint32)(ALPHA)) + (mng_uint32)32768L);      \
       (RET) = (mng_uint16)((iH + (iH >> 16)) >> 16); }

/* ************************************************************************** */
/* *                                                                        * */
/* * Alpha blending macros                                                  * */
/* * this code is based on Adam Costello's "Note on Compositing" from the   * */
/* * mng-list which gives the following formula:                            * */
/* *                                                                        * */
/* * top pixel       = (Rt, Gt, Bt, At)                                     * */
/* * bottom pixel    = (Rb, Gb, Bb, Ab)                                     * */
/* * composite pixel = (Rc, Gc, Bc, Ac)                                     * */
/* *                                                                        * */
/* * all values in the range 0..1                                           * */
/* *                                                                        * */
/* * Ac = 1 - (1 - At)(1 - Ab)                                              * */
/* * s = At / Ac                                                            * */
/* * t = (1 - At) Ab / Ac                                                   * */
/* * Rc = s Rt + t Rb                                                       * */
/* * Gc = s Gt + t Gb                                                       * */
/* * Bc = s Bt + t Bb                                                       * */
/* *                                                                        * */
/* * (I just hope I coded it correctly in integer arithmetic...)            * */
/* *                                                                        * */
/* ************************************************************************** */

#define MNG_BLEND8(RT, GT, BT, AT, RB, GB, BB, AB, RC, GC, BC, AC) {         \
       mng_uint32 S, T;                                                      \
       (AC) = (mng_uint8)((mng_uint32)255 -                                  \
                          ((((mng_uint32)255 - (mng_uint32)(AT)) *           \
                            ((mng_uint32)255 - (mng_uint32)(AB))   ) >> 8)); \
       S    = (mng_uint32)(((mng_uint32)(AT) << 8) /                         \
                           (mng_uint32)(AC));                                \
       T    = (mng_uint32)(((mng_uint32)255 - (mng_uint32)(AT)) *            \
                            (mng_uint32)(AB) / (mng_uint32)(AC));            \
       (RC) = (mng_uint8)((S * (mng_uint32)(RT) +                            \
                           T * (mng_uint32)(RB) + (mng_uint32)127) >> 8);    \
       (GC) = (mng_uint8)((S * (mng_uint32)(GT) +                            \
                           T * (mng_uint32)(GB) + (mng_uint32)127) >> 8);    \
       (BC) = (mng_uint8)((S * (mng_uint32)(BT) +                            \
                           T * (mng_uint32)(BB) + (mng_uint32)127) >> 8); }

#define MNG_BLEND16(RT, GT, BT, AT, RB, GB, BB, AB, RC, GC, BC, AC) {            \
       mng_uint32 S, T;                                                          \
       (AC) = (mng_uint16)((mng_uint32)65535 -                                   \
                           ((((mng_uint32)65535 - (mng_uint32)(AT)) *            \
                             ((mng_uint32)65535 - (mng_uint32)(AB))   ) >> 16)); \
       S    = (mng_uint32)(((mng_uint32)(AT) << 16) /                            \
                            (mng_uint32)(AC));                                   \
       T    = (mng_uint32)(((mng_uint32)65535 - (mng_uint32)(AT)) *              \
                            (mng_uint32)(AB) / (mng_uint32)(AC));                \
       (RC) = (mng_uint16)((S * (mng_uint32)(RT) +                               \
                            T * (mng_uint32)(RB) + (mng_uint32)32767) >> 16);    \
       (GC) = (mng_uint16)((S * (mng_uint32)(GT) +                               \
                            T * (mng_uint32)(GB) + (mng_uint32)32767) >> 16);    \

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人app软件下载大全免费| 国产91富婆露脸刺激对白| 美女诱惑一区二区| 成人美女视频在线观看| 欧美久久久久久蜜桃| 久久香蕉国产线看观看99| 一区二区三区资源| 国产精品自拍毛片| 欧洲另类一二三四区| 久久精品人人爽人人爽| 日本伊人精品一区二区三区观看方式| 成人一区在线观看| 欧美精品一区二| 日韩成人精品在线| 欧美在线视频全部完| 国产婷婷色一区二区三区四区| 天天综合网天天综合色| 一本大道av伊人久久综合| 国产欧美一区二区三区沐欲| 精品女同一区二区| 水蜜桃久久夜色精品一区的特点| 99久久国产综合精品色伊| 欧美经典三级视频一区二区三区| 麻豆免费看一区二区三区| 欧美精品色一区二区三区| 一区二区三区精品视频在线| 波波电影院一区二区三区| 久久久久久久久免费| 国产在线精品一区二区不卡了| 欧美一区二区三区免费视频| 日韩高清不卡一区二区三区| 欧洲一区二区av| 欧美中文字幕亚洲一区二区va在线 | 中文字幕中文乱码欧美一区二区| 欧美a级理论片| 91精品国产全国免费观看| 亚洲va国产天堂va久久en| 欧美日韩美少妇| 日韩精品一区第一页| 91精品国产综合久久精品图片| 亚洲国产视频a| 日韩1区2区3区| 日韩一区二区视频在线观看| 日本三级亚洲精品| 欧美电影免费观看高清完整版在 | 国产精品素人视频| av一区二区三区在线| 亚洲视频一二区| 欧美性猛交xxxxxx富婆| 日韩精品亚洲专区| 久久电影网电视剧免费观看| 日韩一区二区三| 精品无人区卡一卡二卡三乱码免费卡| 精品日韩av一区二区| 国产一区欧美日韩| 国产精品女主播在线观看| 91老师片黄在线观看| 一级中文字幕一区二区| 欧美精品成人一区二区三区四区| 日韩精彩视频在线观看| 久久综合999| 91蜜桃免费观看视频| 欧美福利视频导航| 国产综合久久久久久鬼色 | 欧美一区午夜精品| 国产69精品久久99不卡| 依依成人综合视频| 日韩欧美中文字幕公布| 懂色av中文字幕一区二区三区| 亚洲欧美电影一区二区| 7777精品伊人久久久大香线蕉经典版下载 | 自拍av一区二区三区| 91精品婷婷国产综合久久竹菊| 国产原创一区二区| 一区二区三区四区高清精品免费观看| 91精品国产欧美日韩| 成人午夜免费电影| 午夜av区久久| 国产精品嫩草影院com| 91精品国产综合久久久久| 国产成人午夜99999| 五月天欧美精品| 国产三级精品在线| 欧美精品99久久久**| www.欧美.com| 国产美女av一区二区三区| 亚洲影视资源网| 国产精品久久久久久亚洲毛片| 日韩一级大片在线| 色婷婷亚洲综合| 国产成人在线网站| 蜜臀久久99精品久久久久宅男 | 亚洲国产欧美在线| 国产精品午夜春色av| 精品久久人人做人人爽| 欧美日韩精品电影| 97精品国产露脸对白| 国产精品 欧美精品| 看电视剧不卡顿的网站| 午夜精品爽啪视频| 亚洲综合小说图片| 亚洲欧洲另类国产综合| 国产欧美日韩在线观看| 欧美一级日韩免费不卡| 欧美日韩高清一区二区| 色婷婷久久久亚洲一区二区三区| 风间由美一区二区av101| 国产美女娇喘av呻吟久久| 久久99最新地址| 另类成人小视频在线| 欧美videos中文字幕| 4438x亚洲最大成人网| 欧美日韩中文字幕精品| 欧洲生活片亚洲生活在线观看| 色悠悠久久综合| 国产精品久久久久7777按摩| 久久精品人人做人人综合| 精品久久久久久无| 久久综合一区二区| 2017欧美狠狠色| 欧美激情在线观看视频免费| 欧美激情中文不卡| 国产精品乱人伦一区二区| 国产精品家庭影院| 综合久久久久综合| 亚洲视频免费在线观看| 亚洲女与黑人做爰| 欧美日韩高清不卡| 精品久久久久一区二区国产| 精品久久久久久最新网址| 国产情人综合久久777777| 日本一区二区成人| 亚洲欧美日韩综合aⅴ视频| 日韩美女视频一区| 亚洲永久精品国产| 久久精品国产色蜜蜜麻豆| 国产精品一区二区不卡| 成人午夜在线播放| 欧美日韩亚州综合| 日韩三级伦理片妻子的秘密按摩| 久久综合九色综合97婷婷女人| 99久久伊人网影院| 欧美视频一区二区三区四区 | 亚洲午夜一区二区| 麻豆免费看一区二区三区| 懂色av中文字幕一区二区三区| 99久久99久久精品免费观看| 欧美三级日韩在线| 精品少妇一区二区三区| 中文字幕一区二区三区在线播放| 亚洲小说春色综合另类电影| 免费精品视频在线| 不卡的av中国片| 91精品国模一区二区三区| 久久久久久久综合| 亚洲国产乱码最新视频| 国产精品亚洲视频| 欧美亚洲高清一区| 久久久久久久久岛国免费| 亚洲精品乱码久久久久久| 奇米影视在线99精品| 99vv1com这只有精品| 欧美一区二区女人| 亚洲视频一二三| 国产精品系列在线播放| 欧美日韩激情一区二区| 亚洲国产岛国毛片在线| 日韩精品国产精品| 色综合久久88色综合天天| 久久精品人人爽人人爽| 日韩av电影一区| 一本一道综合狠狠老| 久久婷婷一区二区三区| 亚洲国产一二三| 波多野结衣精品在线| 久久先锋资源网| 日本一不卡视频| 欧美在线不卡视频| 国产精品久久久久久久久久免费看| 乱中年女人伦av一区二区| 在线观看亚洲成人| 亚洲天堂免费看| 成人性色生活片免费看爆迷你毛片| 日韩精品一区二区三区四区| 亚洲h在线观看| 一本一道综合狠狠老| 一区二区中文字幕在线| 精品亚洲成a人在线观看| 欧美三电影在线| 一区二区三区在线观看动漫| 成人教育av在线| 欧美激情中文不卡| 国产一区二区主播在线| 欧美一区2区视频在线观看| 亚洲一区二区三区中文字幕在线| 不卡视频一二三| 国产亚洲成年网址在线观看| 久久精品国产精品亚洲红杏| 国内精品视频666| 精品日韩99亚洲|