Layer* Sprite::indexToLayer(LayerIndex index) const { if (index < LayerIndex(0)) return NULL; int index_count = -1; return index2layer(folder(), index, &index_count); }
static Layer* index2layer(const Layer* layer, const LayerIndex& index, int* index_count) { if (index == *index_count) return (Layer*)layer; else { (*index_count)++; if (layer->isFolder()) { Layer *found; LayerConstIterator it = static_cast<const LayerFolder*>(layer)->getLayerBegin(); LayerConstIterator end = static_cast<const LayerFolder*>(layer)->getLayerEnd(); for (; it != end; ++it) { if ((found = index2layer(*it, index, index_count))) return found; } } return NULL; } }
Layer* Sprite::indexToLayer(LayerIndex index) const { int index_count = -1; return index2layer(getFolder(), index, &index_count); }