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

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

?? image.c

?? gif圖像文件軟件解碼器的arm版本的源代碼程序
?? C
字號:
///////////////////////////////////////////////////////////////////////////////
//
//  image.c
//
//  DESCRIPTION
//        Define functions for image handling
//
//
///////////////////////////////////////////////////////////////////////////////


/*
  Include declarations.
*/

#include "gifcommon.h"


/*
I am not sure whether this declaration is necessary or not.
I think that this is unnecessary. maybe...
*/
/*
  Constant declaration.
*/
const char
  *AppendBinaryType = "ab",
  *BackgroundColor = "#ffffff",  /* white */
  *BorderColor = "#dfdfdf",  /* gray */
  *DefaultTileFrame = "15x15+3+3",
  *DefaultTileGeometry = "120x120+4+3>",
  *DefaultTileLabel = "%f\n%wx%h\n%b",
  *ForegroundColor = "#000000",  /* black */
  *LoadImageText = "  Loading image...  ",
  *LoadImagesText = "  Loading images...  ",
  *MatteColor = "#bdbdbd",  /* gray */
  *PSDensityGeometry = "72.0x72.0",
  *PSPageGeometry = "612x792>",
  *ReadBinaryType = "rb",
  *ReadBinaryUnbufferedType = "rbu",
  *SaveImageText = "  Saving image...  ",
  *SaveImagesText = "  Saving images...  ",
  *WriteBinaryType = "wb";

const unsigned long  DefaultCompressionQuality = 75;


/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                                                             %
%                                                                             %
%                                                                             %
%   A l l o c a t e I m a g e                                                 %
%                                                                             %
%                                                                             %
%                                                                             %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% AllocateImage() returns a pointer to an image structure initialized to
% default values.
%
%  The format of the AllocateImage method is:
%
%      Image *AllocateImage(const ImageInfo *image_info)
%
%  A description of each parameter follows:
%
%    o image_info: Many of the image default values are set from this
%      structure.  For example, filename, compression, depth, background color,
%      and others.
%
%
*/
Image *AllocateImage
(
    const Image     *image_info
)
{
    Image    *allocate_image;

    /*
    Allocate image structure.
    */
    allocate_image = (Image *) image_info->getmemory(sizeof(Image));
    if (allocate_image == (Image *) OP_NULL)
    {
        return OP_NULL;
    }
    (void) memset(allocate_image, 0, sizeof(Image));
    /*
    Initialize Image structure.
    */
    allocate_image->pixeldata = OP_NULL;
    allocate_image->pixeldatasize = 0;
    allocate_image->depth = QuantumDepth;
    allocate_image->interlace = NoInterlace;
    allocate_image->blob = CloneBlobInfo((BlobInfo *) OP_NULL, image_info->getmemory);
    if (image_info == OP_NULL)
    {
        return(allocate_image);
    }
    /*
    Transfer image info.
    */
    allocate_image->getmemory = image_info->getmemory;
    allocate_image->freememory = image_info->freememory;
    allocate_image->interlace = image_info->interlace;
    allocate_image->depth = image_info->depth;
    allocate_image->background_color = image_info->background_color;
    allocate_image->border_color = image_info->border_color;
    allocate_image->matte_color = image_info->matte_color;
    allocate_image->page = image_info->page;  
    if(image_info->blob) 
    {
        *allocate_image->blob = (*image_info->blob);
    }
    return(allocate_image);
}

/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                                                             %
%                                                                             %
%                                                                             %
%   A l l o c a t e I m a g e C o l o r m a p                                 %
%                                                                             %
%                                                                             %
%                                                                             %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%  AllocateImageColormap() allocates an image colormap and initializes
%  it to a linear gray colorspace.  If the image already has a colormap,
%  it is replaced.  AllocateImageColormap() returns True if successful,
%  otherwise False if there is not enough memory.
%
%  The format of the AllocateImageColormap method is:
%
%      unsigned int AllocateImageColormap(Image *image,
%        const unsigned long colors)
%
%  A description of each parameter follows:
%
%    o image: The image.
%
%    o colors: The number of colors in the image colormap.
%
%
*/
unsigned int AllocateImageColormap
(
    Image                   *image,
    const unsigned long     colors
)
{
    register long    i;

    unsigned int     length;

    /*
    Allocate image colormap.
    */
    image->colors = colors;
    length = Max(image->colors,MaxRGB+1)*sizeof(PixelPacket);
    if (image->colormap == (PixelPacket *) OP_NULL)
    {
        image->colormap=(PixelPacket *) image->getmemory(length);
    }
    else
    {
        ReacquireMemory((void **) &image->colormap, length, image->getmemory, image->freememory);
    }
    if (image->colormap == (PixelPacket *) OP_NULL)
    {
        return(OP_FALSE);
    }
    for (i=0; i < (long) image->colors; i++)
    {
        image->colormap[i].red = (Quantum) ((unsigned long) (MaxRGB*i)/Max(colors-1,1));
        image->colormap[i].green = (Quantum) ((unsigned long) (MaxRGB*i)/Max(colors-1,1));
        image->colormap[i].blue = (Quantum) ((unsigned long) (MaxRGB*i)/Max(colors-1,1));
        image->colormap[i].opacity = OpaqueOpacity;
    }
    
    return(OP_TRUE);
}

/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                                                             %
%                                                                             %
%                                                                             %
%   A l l o c a t e N e x t I m a g e                                         %
%                                                                             %
%                                                                             %
%                                                                             %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%  Use AllocateNextImage() to initialize the next image in a sequence to
%  default values.  The next member of image points to the newly allocated
%  image.  If there is a memory shortage, next is assigned OP_NULL.
%
%  The format of the AllocateNextImage method is:
%
%      void AllocateNextImage(const ImageInfo *image_info,Image *image)
%
%  A description of each parameter follows:
%
%    o image_info: Many of the image default values are set from this
%      structure.  For example, filename, compression, depth, background color,
%      and others.
%
%    o image: The image.
%
%
*/
void AllocateNextImage
(
    Image   *image
)
{
    /*
    Allocate image structure.
    */
    image->next = AllocateImage(image);
    if (image->next == (Image *) OP_NULL)
    {
        return;
    }
    image->next->previous = image;
}

 /*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                                                             %
%                                                                             %
%                                                                             %
%   D e s t r o y I m a g e                                                   %
%                                                                             %
%                                                                             %
%                                                                             %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%  DestroyImage() dereferences an image, deallocating memory associated with
%  the image if the reference count becomes zero.
%
%  The format of the DestroyImage method is:
%
%      void DestroyImage(Image *image)
%
%  A description of each parameter follows:
%
%    o image: The image.
%
%
*/
void DestroyImage
(
    Image   *image
)
{
    /*
    Dereference image.
    */

    /*
    Destroy image.
    */
    /*
    Investigate for CloseBlob()
    I think that CloseBlob is unnecessary.
    */
    CloseBlob(image);
    if (image->colormap != (PixelPacket *) OP_NULL)
    {
        image->freememory((void *) image->colormap);
    }
    DestroyImageAttributes(image);
    DestroyBlobInfo(image->blob, image->freememory);
    image->freememory((void *) image);
}

/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                                                             %
%                                                                             %
%                                                                             %
%   D e s t r o y I m a g e s                                                 %
%                                                                             %
%                                                                             %
%                                                                             %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%  DestroyImages() is a convenience method.  It calls DestroyImage() for each
%  image in the sequence.
%
%  The format of the DestroyImages method is:
%
%      void DestroyImages(Image *image)
%
%  A description of each parameter follows:
%
%    o image: The image sequence.
%
%
*/
void DestroyImages
(
    Image *image
)
{
    Image    *next;

    /*
    Proceed to the top of the image list.
    */
    while (image->previous != (Image *) OP_NULL)
    image = image->previous;
    do
    {
        /*
          Destroy this image.
        */
        next = image->next;
        if (next != (Image *)OP_NULL)
        {
            next->previous = (Image *) OP_NULL;
        }
        DestroyImage(image);
        image = next;
    } while (image != (Image *) OP_NULL);
}

const PixelPacket *AcquireImagePixels
(
    const Image             *image, 
    const long              x, 
    const long              y,
    const unsigned long     width, 
    const unsigned long     height
)
{
    if(image->pixeldata == OP_NULL) 
    {
        return OP_NULL;
    }
    else
    {
        return (image->pixeldata + image->columns * y + x);
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
极品少妇一区二区三区精品视频| 蜜臂av日日欢夜夜爽一区| 337p亚洲精品色噜噜| 国产精品一区三区| 亚洲午夜免费视频| 国产精品卡一卡二| 欧美电影免费观看高清完整版| www.在线成人| 狠狠色丁香久久婷婷综| 亚洲成人久久影院| 亚洲精品欧美二区三区中文字幕| 久久嫩草精品久久久久| 欧美一区二区三级| 欧美情侣在线播放| 91蜜桃婷婷狠狠久久综合9色| 狠狠色丁香久久婷婷综合_中 | 777xxx欧美| 99热这里都是精品| 国产精品性做久久久久久| 免费成人在线播放| 丝袜美腿亚洲一区二区图片| 亚洲精品免费在线播放| 成人欧美一区二区三区1314| 久久免费看少妇高潮| 91精品国产高清一区二区三区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 精品欧美一区二区三区精品久久| 色菇凉天天综合网| caoporm超碰国产精品| 国产高清在线观看免费不卡| 精品在线你懂的| 麻豆国产精品777777在线| 亚洲国产一区二区在线播放| 亚洲自拍偷拍网站| 亚洲午夜久久久久久久久久久| 亚洲三级电影网站| 亚洲精品久久久蜜桃| 亚洲精品乱码久久久久久黑人| 亚洲人成亚洲人成在线观看图片 | 久久久久久久免费视频了| 日韩精品影音先锋| 欧美videofree性高清杂交| 91精品欧美久久久久久动漫| 制服丝袜一区二区三区| 欧美一卡二卡三卡| 精品国产免费视频| 久久一二三国产| 国产夜色精品一区二区av| 国产三级精品视频| 椎名由奈av一区二区三区| 国产精品久久久久久久久搜平片 | 亚洲第一av色| 日韩高清不卡一区二区| 蜜桃精品视频在线| 激情五月播播久久久精品| 国产一区二区剧情av在线| 成人综合婷婷国产精品久久蜜臀| 成人黄色一级视频| 99国产精品视频免费观看| 在线观看一区不卡| 91精品国产一区二区三区蜜臀| 日韩欧美国产精品| 中文字幕国产精品一区二区| 亚洲欧美另类图片小说| 亚洲电影激情视频网站| 日韩av在线播放中文字幕| 韩国欧美国产1区| 成人午夜av在线| 色就色 综合激情| 日韩一级片在线观看| 久久久久久久综合色一本| 国产精品久久久久久久久晋中| 亚洲一区在线观看免费| 久久国产尿小便嘘嘘| 不卡一区中文字幕| 欧美日韩久久一区| 久久久久久一级片| 一区二区在线观看不卡| 免费人成网站在线观看欧美高清| 国产中文一区二区三区| 99精品国产视频| 日韩一区二区免费电影| 国产女主播在线一区二区| 亚洲综合999| 国产一区二区三区免费看| 在线亚洲高清视频| 久久精品人人做人人爽人人| 一区二区三区四区视频精品免费| 日本特黄久久久高潮| 成人的网站免费观看| 欧美日韩国产精品成人| 国产无人区一区二区三区| 一个色在线综合| 国产一区二区美女诱惑| 欧美性xxxxxxxx| 国产女人18毛片水真多成人如厕| 亚洲国产精品综合小说图片区| 国产一本一道久久香蕉| 欧美日韩久久不卡| 国产精品狼人久久影院观看方式| 日本女优在线视频一区二区| 91在线云播放| 久久久久久久久伊人| 日韩国产成人精品| 色88888久久久久久影院野外| 精品国产乱码久久| 亚洲一区在线免费观看| 成人h版在线观看| 精品捆绑美女sm三区| 亚洲大尺度视频在线观看| 成人黄色电影在线| 精品国产乱码久久久久久蜜臀| 亚洲伊人伊色伊影伊综合网| 成人黄色777网| 久久精品日韩一区二区三区| 日韩高清电影一区| 欧美色网站导航| 一区二区三区久久久| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 色偷偷88欧美精品久久久| 久久久久国产精品免费免费搜索 | 成人精品国产福利| 久久午夜电影网| 蜜桃视频第一区免费观看| 欧美人与性动xxxx| 一区二区高清在线| 91在线免费视频观看| 欧美极品aⅴ影院| 国产成人av影院| 久久精品视频一区二区| 久久66热re国产| 精品少妇一区二区三区免费观看| 婷婷开心久久网| 欧美日韩1区2区| 亚洲电影一区二区三区| 91福利在线播放| 亚洲激情图片一区| 欧美性受xxxx黑人xyx性爽| 一区二区在线观看免费视频播放| 91麻豆视频网站| 亚洲色图一区二区| 91麻豆免费观看| 亚洲精品综合在线| 91久久香蕉国产日韩欧美9色| 亚洲精品va在线观看| 欧美日韩一区二区电影| 亚洲成人免费看| 欧美一区二区三区视频| 麻豆精品在线观看| 精品少妇一区二区三区| 国产一区美女在线| 国产精品美女久久久久久久网站| 成人免费视频国产在线观看| 国产精品久久久久一区| 一本到高清视频免费精品| 亚洲精品网站在线观看| 欧美日本一区二区在线观看| 日韩精品国产精品| 久久免费午夜影院| 99久久精品免费观看| 亚洲永久精品大片| 欧美v日韩v国产v| 国产成人av电影免费在线观看| 国产精品久久久久久久久果冻传媒 | 麻豆久久久久久| 亚洲国产精品二十页| 91丨国产丨九色丨pron| 亚洲成人在线免费| 精品免费国产二区三区| 成人高清视频在线观看| 夜夜夜精品看看| 日韩视频一区在线观看| 国产+成+人+亚洲欧洲自线| 亚洲美女淫视频| 日韩欧美一级二级三级| 成人福利电影精品一区二区在线观看| 一区二区在线看| 精品福利在线导航| 91欧美一区二区| 日日夜夜精品视频天天综合网| 久久精品视频网| 欧美日韩国产a| 高清av一区二区| 午夜不卡av免费| 国产欧美日韩另类一区| 欧美视频一区在线| 国产成人自拍网| 日韩精品视频网| 亚洲视频一区在线| 精品成人a区在线观看| 色天天综合色天天久久| 久久99国内精品| 亚洲主播在线播放| 国产欧美日韩在线观看| 在线综合亚洲欧美在线视频| 成人教育av在线| 久久se精品一区精品二区| 一区二区三区在线观看视频 | 日韩三级.com| 色婷婷一区二区三区四区|