def build_sprite_sheets(args, sprites): sheets = [] layout = get_layout(args.layout) oldlen = 0 with Timer('generate sheet layouts'): while sprites and len(sprites) != oldlen: oldlen = len(sprites) sheet = Sheet(min_size=args.min_size, max_size=args.max_size, rotate=args.rotate, npot=args.npot, square=args.square, layout=layout) sprites = sheet.add(sprites) if sheet.sprites: sheets.append(sheet) if sprites: log.warn("Could not place:") for spr in sprites: log.warn("\t%s", spr.name) return sheets
def build_sprite_sheets(args, sprites): sheets = [] layout = get_layout(args.layout) oldlen = 0 with Timer('generate sheet layouts'): while sprites and len(sprites) != oldlen: oldlen = len(sprites) sheet = Sheet( min_size = args.min_size, max_size = args.max_size, rotate = args.rotate, npot = args.npot, square = args.square, layout = layout ) sprites = sheet.add(sprites) if sheet.sprites: sheets.append(sheet) if sprites: log.warn("Could not place:") for spr in sprites: log.warn("\t%s", spr.name) return sheets
def load_and_process_sprites(args): sprites = load_sprites(args.sprites) if not sprites: raise ValueError('No sprites found.') if args.mask: ## Mask sprites against background color sprites = mask_sprites(sprites, args.mask) if args.trim: ## Trim sprites to visible area sprites = trim_sprites(sprites) else: ## Generate hashes of trimmed sprites sprites = hash_sprites(sprites) if args.alias is not None: ## Find and remove duplicate sprites sprites, aliased = alias_sprites(sprites, args.alias) if aliased: sheet = Sheet(npot=True, layout=get_layout('stack')) sheet.add(aliased) texture = sheet.prepare(args.debug) texname = '%salias.png' % args.prefix texture.save(texname) if args.extrude: ## Extrude sprite edges to avoid color bleed sprites = extrude_sprites(sprites, args.extrude) if args.pad: ## Insert transparent padding between sprites sprites = pad_sprites(sprites, args.pad) if args.sort: sprites = sort_sprites(sprites, args.sort, args.rotate) return sprites