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

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

?? image.c

?? STM32+Grlib
?? C
?? 第 1 頁 / 共 2 頁
字號:
            *(unsigned long *)(g_pucDictionary + ulBits) = 0;
        }

        //
        // Determine the number of bytes of data to decompress.
        //
        ulCount = (((lWidth * lBPP) + 7) / 8) * lHeight;

        //
        // Initialize the pointer into the dictionary.
        //
        ulIdx = 0;

        //
        // Start off with no encoding byte.
        //
        ulBits = 0;
        ulByte = 0;

        //
        // Start from the upper left corner of the image.
        //
        lX1 = 0;

        //
        // Loop while there are more rows or more data in the image.
        //
        while(lHeight && ulCount)
        {
            //
            // See if an encoding byte needs to be read.
            //
            if(ulBits == 0)
            {
                //
                // Read the encoding byte, which indicates if each of the
                // following eight bytes are encoded or literal.
                //
                ulByte = *pucImage++;
                ulBits = 8;
            }

            //
            // See if the next byte is encoded or literal.
            //
            if(ulByte & (1 << (ulBits - 1)))
            {
                //
                // This byte is encoded, so extract the location and size of
                // the encoded data within the dictionary.
                //
                ulMatch = *pucImage >> 3;
                ulSize = (*pucImage++ & 7) + 2;

                //
                // Decrement the count of bytes to decode by the number of
                // copied bytes.
                //
                ulCount -= ulSize;
            }
            else
            {
                //
                // This byte is a literal, so copy it into the dictionary.
                //
                g_pucDictionary[ulIdx++] = *pucImage++;

                //
                // Decrement the count of bytes to decode.
                //
                ulCount--;

                //
                // Clear any previous encoded data information.
                //
                ulMatch = 0;
                ulSize = 0;
            }

            //
            // Loop while there are bytes to copy for the encoded data, or
            // once for literal data.
            //
            while(ulSize || !(ulByte & (1 << (ulBits - 1))))
            {
                //
                // Set the encoded data bit for this data so that this loop
                // will only be executed once for literal data.
                //
                ulByte |= 1 << (ulBits - 1);

                //
                // Loop while there is more encoded data to copy and there is
                // additional space in the dictionary (before the buffer
                // wraps).
                //
                while(ulSize && (ulIdx != sizeof(g_pucDictionary)))
                {
                    //
                    // Copy this byte.
                    //
                    g_pucDictionary[ulIdx] =
                        g_pucDictionary[(ulIdx + ulMatch) %
                                        sizeof(g_pucDictionary)];

                    //
                    // Increment the dictionary pointer.
                    //
                    ulIdx++;

                    //
                    // Decrement the encoded data size.
                    //
                    ulSize--;
                }

                //
                // See if the dictionary pointer is about to wrap, or if there
                // is no more data to decompress.
                //
                if((ulIdx == sizeof(g_pucDictionary)) || !ulCount)
                {
                    //
                    // Loop through the data in the dictionary buffer.
                    //
                    for(ulIdx = 0;
                        (ulIdx < sizeof(g_pucDictionary)) && lHeight; )
                    {
                        //
                        // Compute the number of pixels that remain in the
                        // dictionary buffer.
                        //
                        ulNum = ((sizeof(g_pucDictionary) - ulIdx) * 8) / lBPP;

                        //
                        // See if any of the pixels in the dictionary buffer
                        // are within the clipping region.
                        //
                        if((lY >= pContext->sClipRegion.sYMin) &&
                           ((lX1 + ulNum) >= lX0) && (lX1 <= lX2))
                        {
                            //
                            // Skip some pixels at the start of the scan line
                            // if required to stay within the clipping region.
                            //
                            if(lX1 < lX0)
                            {
                                ulIdx += ((lX0 - lX1) * lBPP) / 8;
                                lX1 = lX0;
                            }

                            //
                            // Shorten the scan line if required to stay within
                            // the clipping region.
                            //
                            if(ulNum > (lX2 - lX1 + 1))
                            {
                                ulNum = lX2 - lX1 + 1;
                            }

                            //
                            // Draw this row of image pixels.
                            //
                            DpyPixelDrawMultiple(pContext->pDisplay, lX + lX1,
                                                 lY, lX1 & 7, ulNum, lBPP,
                                                 g_pucDictionary + ulIdx,
                                                 pucPalette);
                        }

                        //
                        // Move the X coordinate back to the start of the first
                        // data byte in this portion of the dictionary buffer.
                        //
                        lX1 = ((lX1 * lBPP) & ~7) / lBPP;

                        //
                        // See if the remainder of this scan line resides
                        // within the dictionary buffer.
                        //
                        if(((((lWidth - lX1) * lBPP) + 7) / 8) >
                           (sizeof(g_pucDictionary) - ulIdx))
                        {
                            //
                            // There is more to this scan line than is in the
                            // dictionary buffer at this point, so move the
                            // X coordinate by by the number of pixels in the
                            // dictionary buffer.
                            //
                            lX1 += (((sizeof(g_pucDictionary) - ulIdx) * 8) /
                                    lBPP);

                            //
                            // The entire dictionary buffer has been scanned.
                            //
                            ulIdx = sizeof(g_pucDictionary);
                        }
                        else
                        {
                            //
                            // The remainder of this scan line resides in the
                            // dictionary buffer, so skip past it.
                            //
                            ulIdx += (((lWidth - lX1) * lBPP) + 7) / 8;

                            //
                            // Move to the start of the next scan line.
                            //
                            lX1 = 0;
                            lY++;

                            //
                            // There is one less scan line to process.
                            //
                            lHeight--;
                        }
                    }

                    //
                    // Start over from the beginning of the dictionary buffer.
                    //
                    ulIdx = 0;
                }
            }

            //
            // Advance to the next bit in the encoding byte.
            //
            ulBits--;
        }
    }
}

//*****************************************************************************
//
// Close the Doxygen group.
//! @}
//
//*****************************************************************************

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久美女毛片| 久久这里都是精品| 91在线观看免费视频| 国产成人综合在线| 国产在线播精品第三| 国产酒店精品激情| 国产高清在线精品| 国产91露脸合集magnet| www.日韩av| 91精彩视频在线观看| 色妹子一区二区| 欧美日韩国产123区| 欧美久久久久中文字幕| 日韩欧美美女一区二区三区| 精品国产精品网麻豆系列| 精品久久五月天| 久久综合国产精品| 亚洲欧美一区二区在线观看| 亚洲婷婷综合色高清在线| 一区二区三区在线视频免费观看| 亚洲va欧美va人人爽| 蜜臀久久99精品久久久画质超高清 | 国产麻豆午夜三级精品| 国产精品1区二区.| 91色九色蝌蚪| 日韩一区二区在线观看视频| 久久精品欧美一区二区三区麻豆| 亚洲国产精品成人久久综合一区| 亚洲人精品午夜| 日本特黄久久久高潮| 高清在线成人网| 欧美精品777| 欧美国产激情一区二区三区蜜月| 亚洲在线视频免费观看| 国产成人一级电影| 欧美日韩成人综合在线一区二区| 久久婷婷成人综合色| 亚洲摸摸操操av| 狠狠色狠狠色综合系列| 色呦呦日韩精品| 久久久99精品久久| 偷拍一区二区三区四区| 国产91精品免费| 欧美一区二区在线不卡| 国产精品乱码一区二三区小蝌蚪| 视频一区视频二区中文| 91免费版在线看| 久久日韩精品一区二区五区| 亚洲图片有声小说| 成人国产一区二区三区精品| 91精品国产综合久久精品麻豆 | 国产成人av资源| 91精品国产综合久久国产大片| 国产精品国模大尺度视频| 国产一区二区三区最好精华液| 欧美军同video69gay| 亚洲激情一二三区| 成人app下载| 日本一区二区三区国色天香 | 青椒成人免费视频| 欧美午夜精品电影| 亚洲欧美日韩成人高清在线一区| 国产九色sp调教91| 日韩精品一区二区三区视频| 香蕉久久一区二区不卡无毒影院 | 五月婷婷色综合| 在线观看www91| 亚洲男女一区二区三区| 91麻豆文化传媒在线观看| 国产精品亲子伦对白| 国产xxx精品视频大全| 久久你懂得1024| 国产精品一区一区| 久久久国产午夜精品| 国产成人免费xxxxxxxx| 久久久噜噜噜久噜久久综合| 国产乱一区二区| 国产亚洲成年网址在线观看| 国产精品夜夜爽| 国产精品伦理一区二区| 99re亚洲国产精品| 亚洲一区影音先锋| 欧美精品乱码久久久久久| 亚洲第一主播视频| 日韩视频永久免费| 国产原创一区二区| 亚洲国产精品传媒在线观看| 91麻豆免费看| 国产精品1区2区| 日本一区二区视频在线| 99精品偷自拍| 亚洲成人午夜影院| 精品国产乱码久久久久久1区2区| 国产成人精品亚洲777人妖| 中文字幕中文字幕一区| 欧美婷婷六月丁香综合色| 免费在线观看视频一区| 久久久久久久久久久电影| av亚洲精华国产精华精| 亚洲国产综合在线| 久久久久成人黄色影片| 91欧美一区二区| 美女视频网站黄色亚洲| 中文一区在线播放| 欧美日韩精品欧美日韩精品| 精品一区二区三区久久久| 国产视频一区在线播放| 欧美天堂一区二区三区| 国产曰批免费观看久久久| 一区二区三区四区在线播放| 欧美一级片免费看| 99久久99久久久精品齐齐| 日韩在线一区二区| 综合色天天鬼久久鬼色| 欧美成人a视频| 一本大道久久a久久精品综合| 免费人成黄页网站在线一区二区| 中文字幕av一区二区三区| 91精品在线免费观看| 91玉足脚交白嫩脚丫在线播放| 日本最新不卡在线| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲精品久久久久久国产精华液| 亚洲精品在线免费播放| 欧美久久久久久久久久 | 亚洲免费资源在线播放| 久久久精品一品道一区| 91麻豆精品91久久久久久清纯| 99久久精品国产网站| 国产一区视频导航| 日韩中文字幕1| 亚洲国产日韩a在线播放性色| 欧美激情一区二区三区在线| 欧美大片在线观看| 51精品视频一区二区三区| 91久久精品一区二区| a在线欧美一区| 国产成人午夜电影网| 极品美女销魂一区二区三区| 视频精品一区二区| 亚洲成人中文在线| 亚洲在线观看免费| 一区二区三区国产精华| 国产精品灌醉下药二区| 国产精品乱码一区二区三区软件 | 成人午夜av电影| 国产做a爰片久久毛片| 久久成人综合网| 日韩av电影一区| 舔着乳尖日韩一区| 亚洲第一电影网| 午夜精品影院在线观看| 亚洲成人手机在线| 日韩专区欧美专区| kk眼镜猥琐国模调教系列一区二区| 裸体在线国模精品偷拍| 激情亚洲综合在线| 国产一区三区三区| 波多野结衣欧美| 91在线无精精品入口| 一本在线高清不卡dvd| 91丨国产丨九色丨pron| 日本精品裸体写真集在线观看| 一本大道久久a久久精品综合| 在线免费观看日本欧美| 欧美精品在线一区二区| 日韩一区二区免费视频| 精品sm在线观看| 国产精品天天看| 亚洲最大色网站| 青青草97国产精品免费观看无弹窗版| 经典一区二区三区| 成人av网站在线观看免费| 91极品美女在线| 欧美一区二区视频观看视频| 久久久www成人免费毛片麻豆| 国产精品色噜噜| 亚洲超丰满肉感bbw| 激情综合色综合久久| 波多野结衣中文一区| 欧美性猛交xxxx黑人交| 欧美videossexotv100| 国产精品乱码人人做人人爱| 亚洲v中文字幕| 成人在线视频一区| 欧美系列一区二区| 久久久精品人体av艺术| 亚洲高清免费在线| 国产精品一区免费视频| 欧美色视频在线| 久久亚洲私人国产精品va媚药| 日韩码欧中文字| 九九热在线视频观看这里只有精品| 风间由美一区二区av101| 欧美日韩激情在线| 国产精品丝袜一区| 奇米影视在线99精品| 色综合天天做天天爱| 精品成人一区二区三区四区| 亚洲一区二区成人在线观看|