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

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

?? attribute.c

?? gif圖像文件軟件解碼器的arm版本的源代碼程序
?? C
字號:
///////////////////////////////////////////////////////////////////////////////
//
//  attribute.c
//
//  DESCRIPTION
//        Define functions to get, set, or destroy attributes associated
//        with a particular image (e.g. comments, copyright, author, etc).
//
//
///////////////////////////////////////////////////////////////////////////////


/*
  Include declarations.
*/

#include "gifcommon.h"

/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                                                             %
%                                                                             %
%                                                                             %
%   D e s t r o y I m a g e A t t r i b u t e s                               %
%                                                                             %
%                                                                             %
%                                                                             %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%  DestroyImageAttributes() deallocates memory associated with the image
%  attribute list.
%
%  The format of the DestroyImageAttributes method is:
%
%      DestroyImageAttributes(Image *image)
%
%  A description of each parameter follows:
%
%    o image: The image.
%
%
*/
void DestroyImageAttributes
(
    Image   *image
)
{
    ImageAttribute              *attribute;
    register ImageAttribute     *p;

    for (p = image->attributes; p != (ImageAttribute *) OP_NULL; )
    {
        attribute = p;
        p = p->next;
        if (attribute->key != (char *) OP_NULL)
        {
            image->freememory((void *) attribute->key);
        }
        if (attribute->value != (char *) OP_NULL)
        {
            image->freememory((void *) attribute->value);
        }
        image->freememory((void *) attribute);
    }
    image->attributes = (ImageAttribute *) OP_NULL;
}

/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                                                             %
%                                                                             %
%                                                                             %
%   S e t I m a g e A t t r i b u t e                                         %
%                                                                             %
%                                                                             %
%                                                                             %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%  SetImageAttribute() searches the list of image attributes and replaces the
%  attribute value.  If it is not found in the list, the attribute name
%  and value is added to the list.   If the attribute exists in the list,
%  the value is concatenated to the attribute.  SetImageAttribute returns
%  True if the attribute is successfully concatenated or added to the list,
%  otherwise False.  If the value is OP_NULL, the matching key is deleted
%  from the list.
%
%  The format of the SetImageAttribute method is:
%
%      unsigned int SetImageAttribute(Image *image,const char *key,
%        const char *value)
%
%  A description of each parameter follows:
%
%    o image: The image.
%
%    o key,value:  These character strings are the name and value of an image
%      attribute to replace or add to the list.
%
%
*/
unsigned int SetImageAttribute
(
    Image           *image,
    const char      *key,
    const char      *value
)
{
    ImageAttribute              *attribute;
    register ImageAttribute     *p;

    /*
    Initialize new attribute.
    */
    if ((key == (const char *) OP_NULL) || (*key == '\0'))
    {
        return(OP_FALSE);
    }
    if (value == (const char *) OP_NULL)
    {
        /*
        Delete attribute from the image attributes list.
        */
        for (p = image->attributes; p != (ImageAttribute *) OP_NULL; p = p->next)
        {
            if (LocaleCompare(key,p->key) == 0)
            {
                break;
            }
        }
        if (p == (ImageAttribute *) OP_NULL)
        {
            return(OP_FALSE);
        }
        if (p->key != (char *) OP_NULL)
        {
            image->freememory((void *) p->key);
        }
        if (p->value != (char *) OP_NULL)
        {
            image->freememory((void *) p->value);
        }
        if (p->previous != (ImageAttribute *) OP_NULL)
        {
            p->previous->next=p->next;
        }
        else
        {
            image->attributes=p->next;
            if (p->next != (ImageAttribute *) OP_NULL)
            {
                p->next->previous=(ImageAttribute *) OP_NULL;
            }
        }
        if (p->next != (ImageAttribute *) OP_NULL)
        {
            p->next->previous = p->previous;
        }
        attribute = p;
        image->freememory((void *) attribute);
        return(OP_TRUE);
    }
    if (*value == '\0')
    {
        return(OP_FALSE);
    }
    attribute = (ImageAttribute *) image->getmemory(sizeof(ImageAttribute));
    if (attribute == (ImageAttribute *) OP_NULL)
    {
        return(OP_FALSE);
    }
    attribute->key = AllocateString(key, image->getmemory);
    if ((LocaleNCompare(key,"IPTC",4) == 0) || (LocaleNCompare(key,"8BIM",4) == 0) ||
            (LocaleNCompare(key,"EXIF",4) == 0) || (LocaleNCompare(key,"comment",7) == 0))
    {
        attribute->value = AllocateString(value, image->getmemory);
    }
    else
    {
        attribute->value = OP_NULL;
    }
    attribute->compression = OP_FALSE;
    attribute->previous = (ImageAttribute *) OP_NULL;
    attribute->next = (ImageAttribute *) OP_NULL;
    
    if (image->attributes == (ImageAttribute *) OP_NULL)
    {
        image->attributes = attribute;
        return(OP_TRUE);
    }
    for (p = image->attributes; p != (ImageAttribute *) OP_NULL; p = p->next)
    {
        if (LocaleCompare(attribute->key,p->key) == 0)
        {
            (void) ConcatenateString(&p->value,attribute->value, image->getmemory,image->freememory);
            image->freememory((void *) attribute->value);
            image->freememory((void *) attribute->key);
            image->freememory((void *) attribute);
            return(OP_TRUE);
        }
        if (p->next == (ImageAttribute *) OP_NULL)
        {
            break;
        }
    }
    /*
    Place new attribute at the end of the attribute list.
    */
    attribute->previous = p;
    p->next = attribute;
    return(OP_TRUE);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚州成人在线电影| 99精品1区2区| 色婷婷av一区二区三区gif| 欧美日韩在线播| 国产精品久久久久久久久免费相片| 亚洲一区二区三区在线| 国产精品99久久久| 7777精品伊人久久久大香线蕉的 | 欧美综合视频在线观看| 亚洲精品一线二线三线| 日韩高清国产一区在线| 91美女在线视频| 国产日韩欧美麻豆| 狠狠色综合日日| 在线成人av网站| 亚洲一区二区三区激情| caoporm超碰国产精品| 久久久激情视频| 国产乱码精品一区二区三区av| 91精品国产高清一区二区三区 | 国产日韩欧美一区二区三区乱码| 香蕉成人啪国产精品视频综合网| 91香蕉视频黄| 国产欧美一区二区精品久导航 | 成人激情午夜影院| 精品国产免费人成电影在线观看四季 | 亚洲日本护士毛茸茸| 国产精品18久久久久久久久久久久| 91精品国产91久久综合桃花| 亚洲成人综合网站| 欧美日韩视频第一区| 亚洲一区二区视频在线| 欧美亚一区二区| 亚洲国产精品尤物yw在线观看| 色综合久久中文字幕| 亚洲女同ⅹxx女同tv| 色婷婷综合久久久中文一区二区| 中文字幕在线不卡国产视频| 94色蜜桃网一区二区三区| 日韩久久一区二区| 色综合久久中文综合久久牛| 亚洲一区二区精品久久av| 欧美日韩日本视频| 日韩极品在线观看| 精品国产91九色蝌蚪| 国产精一品亚洲二区在线视频| 久久久久久久电影| 成人aaaa免费全部观看| 伊人婷婷欧美激情| 欧美精品黑人性xxxx| 麻豆视频一区二区| 欧美经典一区二区| 99久久精品国产麻豆演员表| 亚洲午夜影视影院在线观看| 欧美高清你懂得| 国产一区在线不卡| 亚洲少妇30p| 欧美人狂配大交3d怪物一区| 国模少妇一区二区三区| 国产欧美一区视频| 日本电影欧美片| 久久激情五月激情| 中文字幕一区二区不卡| 欧美日韩国产在线观看| 久88久久88久久久| 亚洲男人的天堂在线观看| 欧美精品一区二区三区四区| 91色视频在线| 蜜桃精品视频在线观看| 欧美国产日产图区| 精品视频一区二区不卡| 国产一区二三区好的| 亚洲综合在线免费观看| 精品1区2区在线观看| 色妹子一区二区| 精品系列免费在线观看| 亚洲精品国久久99热| 精品理论电影在线观看 | 美女一区二区视频| 中文字幕在线不卡一区| 日韩欧美电影一区| 色婷婷亚洲精品| 国内成人精品2018免费看| 一区二区三区高清不卡| 国产人成亚洲第一网站在线播放| 欧美高清视频www夜色资源网| 成人av电影免费观看| 色呦呦网站一区| 国产一区二区三区四区在线观看| 一区二区三区蜜桃| 国产视频一区二区三区在线观看| 欧美日韩精品系列| 在线观看视频一区二区| 国产成人综合网| 久久国产欧美日韩精品| 日韩精品午夜视频| 亚洲综合一区二区三区| 国产精品国产成人国产三级| 久久先锋影音av| 欧美tickling挠脚心丨vk| 欧美日韩三级一区| 欧美视频完全免费看| 91久久香蕉国产日韩欧美9色| 成人动漫在线一区| 风间由美一区二区三区在线观看| 美女一区二区视频| 麻豆免费看一区二区三区| 日产精品久久久久久久性色| 亚洲自拍偷拍九九九| 亚洲日本免费电影| 亚洲精品视频自拍| 一区二区国产视频| 亚洲电影激情视频网站| 一区二区三区不卡视频| 亚洲精品综合在线| 亚洲成人黄色影院| 日本成人在线视频网站| 久久精品国产亚洲5555| 麻豆91精品91久久久的内涵| 捆绑调教一区二区三区| 激情伊人五月天久久综合| 久久99国产精品久久| 极品少妇xxxx精品少妇| 激情久久五月天| 国产成人久久精品77777最新版本| 国产一区二区按摩在线观看| 国产成人午夜高潮毛片| 成人激情动漫在线观看| av一本久道久久综合久久鬼色| 99精品欧美一区| 欧美欧美欧美欧美首页| 欧美变态tickle挠乳网站| 亚洲精品在线三区| 中文字幕一区二区视频| 亚洲在线免费播放| 日韩国产精品大片| 国产在线播精品第三| 成人a级免费电影| 欧美在线视频全部完| 欧美一区午夜视频在线观看 | 99久久精品免费看| 欧美日韩一级二级三级| 日韩视频免费直播| 国产精品毛片久久久久久久| 一区二区三区四区视频精品免费| 午夜影院久久久| 国产一区二区在线看| 99re热视频精品| 欧美一区二区视频在线观看2020| 久久久三级国产网站| 一区二区三区日韩欧美| 久久er99热精品一区二区| 波多野结衣中文字幕一区二区三区 | 国产成人久久精品77777最新版本| 日本道免费精品一区二区三区| 日韩无一区二区| 亚洲欧美另类小说视频| 久久精品二区亚洲w码| 色婷婷亚洲一区二区三区| 日韩一区二区三区四区五区六区| 国产精品天天摸av网| 视频一区免费在线观看| 成人精品高清在线| 日韩免费福利电影在线观看| 一区二区三区四区国产精品| 精品一区二区三区久久| 欧洲人成人精品| 国产日产精品1区| 麻豆传媒一区二区三区| 色呦呦国产精品| 国产情人综合久久777777| 日本伊人色综合网| 色偷偷久久人人79超碰人人澡| 久久九九99视频| 免费久久99精品国产| 欧美专区日韩专区| 中文在线一区二区| 久久国产精品一区二区| 欧美性猛交一区二区三区精品| 中文字幕国产一区二区| 久久精品国产99国产| 正在播放一区二区| 一区二区三区欧美亚洲| www.欧美.com| 欧美激情中文不卡| 国产一区91精品张津瑜| 日韩欧美国产综合一区| 美女在线视频一区| 日韩一区二区免费在线电影| 亚洲成人av一区二区| 精品视频在线免费| 亚洲午夜免费福利视频| 一本一本大道香蕉久在线精品| 国产精品麻豆网站| 成人午夜视频福利| 国产精品不卡在线| 91麻豆精品在线观看| 亚洲视频一二区| 色婷婷久久一区二区三区麻豆| 亚洲另类春色校园小说|