+ // use local cached color map without re-calculate cache.
+ if(gifCachedColor.localCachedColorMap == colorMap)
+ {
+ cachedColorPtr = gifCachedColor.localCachedColor.data();
+ }
+ // else if w * h is big enough, generate local cached color.
+ else if(colorMap->ColorCount * LOCAL_CACHED_COLOR_GENERATE_THRESHOLD < w * h)
+ {
+ gifCachedColor.localCachedColor.resize(colorMap->ColorCount);
+ for(i = 0; i < colorMap->ColorCount; ++i)
+ {
+ gifCachedColor.localCachedColor[i] = PixelLookup(colorMap, i);
+ }
+ gifCachedColor.localCachedColorMap = colorMap;
+
+ cachedColorPtr = gifCachedColor.localCachedColor.data();
+ }