Esempio n. 1
0
    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
Esempio n. 2
0
    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