def findAllResources(self, libraries, filter=None, useCombImgs=True): combinedImages = set(()) # go through all libs (weighted) and collect necessary resources for lib in libraries: for resource in self.findLibResources(lib, ): if self.isCombinedImage(resource): combinedImages.add(resource) if (filter and not filter(resource)): continue else: yield resource # go through the combined images if filter: for combpath in combinedImages: combimg = CombinedImage(combpath) for embimg in combimg.getEmbeddedImages(): if filter(embimg): yield combpath break # one match is enough else: # if there is no filter, the comb. images have been added in the # first loop pass return
def getResourcesByClass(self, libs, classToAssetHints): classToResources = collections.defaultdict(list) for lib in libs: allResources = [x for x in self.findAllResources([lib])] # lookup table for resource id's resVals = {} # get resId and pot. embedded Images for res in allResources: resId = self.assetIdFromPath(res, lib) if self.isCombinedImage(res): combimg = CombinedImage(res) embImgs = combimg.getEmbeddedImages() resVals[res] = (resId, embImgs) else: resVals[res] = (resId, False) # try to match classes to resources in this lib for classId, assetSet in classToAssetHints.items(): for resource in allResources: resVal = resVals[resource] if self.assetsMatchResource(assetSet, resource, resVal): classToResources[classId].append(resId) return classToResources