X-Git-Url: https://git.ao2.it/android/android-app-development-getting-started.git/blobdiff_plain/b9c60624b1049409f0a000b6375fe3f65803ff74..16126137e36566d08a7a004c692d25e818b5dda9:/ic_launcher_template/androink.py?ds=sidebyside diff --git a/ic_launcher_template/androink.py b/ic_launcher_template/androink.py index c8a83bd..9473f35 100755 --- a/ic_launcher_template/androink.py +++ b/ic_launcher_template/androink.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# androink - Generate android resources for multiple resolutions +# androink - Generate android resources for multiple densities # # Copyright (C) 2012 Federico Paolinelli # Copyright (C) 2013 Antonio Ospite @@ -30,8 +30,8 @@ import os __description = """This script expects the svg to use Inkscape DPIs. -This means that the resolution given in the drawing will be used for -MDPI resolution and scaled to generate the other resolutions. +Either MDPI or HDPI can be used as the baseline density and the drawables will +scaled to generate the other densities. """ __version = "0.1" @@ -40,23 +40,44 @@ __author_info = "Federico Paolinelli, Antonio Ospite" BASE_OPTIONS = ' --export-area-page --export-png ' -# Inkscape default DPI is 90, we use this for the MDPI resource +# Inkscape default DPI is 90 BASELINE_DPI = 90 -LDPI = ('drawable-ldpi', BASELINE_DPI * 0.75) -MDPI = ('drawable-mdpi', BASELINE_DPI * 1.0) -HDPI = ('drawable-hdpi', BASELINE_DPI * 1.5) -XHDPI = ('drawable-xhdpi', BASELINE_DPI * 2.0) - -resolutions = [LDPI, MDPI, HDPI, XHDPI] +# densities are calculated following the scaling ratio +# 3:4:6:8 mapped to ldpi:mdpi:hdpi:xhdpi + +# for baseline mdpi consider 4 as the base ratio +densities_baseline_mdpi = [ + ('drawable-ldpi', BASELINE_DPI * 0.75), # 3/4 + ('drawable-mdpi', BASELINE_DPI * 1.0), # 4/4 + ('drawable-hdpi', BASELINE_DPI * 1.5), # 6/4 + ('drawable-xhdpi', BASELINE_DPI * 2.0), # 8/4 + ('drawable-xxhdpi', BASELINE_DPI * 3.0), # 12/4 + ('drawable-xxxhdpi', BASELINE_DPI * 4.0), # 16/4 +] + +# for baseline hdpi consider 6 as the base ratio +densities_baseline_hdpi = [ + ('drawable-ldpi', BASELINE_DPI * 0.5), # 3/6 + ('drawable-mdpi', BASELINE_DPI * 0.666666667), # 4/6 + ('drawable-hdpi', BASELINE_DPI * 1.0), # 6/6 + ('drawable-xhdpi', BASELINE_DPI * 1.333333333), # 8/6 + ('drawable-xxhdpi', BASELINE_DPI * 2.0), # 12/6 + ('drawable-xxxhdpi', BASELINE_DPI * 2.666666667), # 16/6 +] def export_file(file_name): print 'exporting file', file_name name_without_ext = os.path.splitext(file_name)[0] - for rel in resolutions: - dpispec, dpi = rel + if args.baseline_density == 'mdpi': + densities = densities_baseline_mdpi + elif args.baseline_density == 'hdpi': + densities = densities_baseline_hdpi + + for density in densities: + dpispec, dpi = density res_path = os.path.join(args.res_folder, dpispec) if not os.path.exists(res_path): @@ -66,9 +87,9 @@ def export_file(file_name): target = os.path.join(res_path, name_without_ext + '.png') command_list = [args.ink_path, '--export-area-page', - '-f', source_file, - '--export-png', target, - '--export-dpi', str(dpi)] + '-f', source_file, + '--export-png', target, + '--export-dpi', str(dpi)] command = " ".join(command_list) @@ -81,29 +102,33 @@ def option_parser(): usage = "usage: %(prog)s [options]" parser = argparse.ArgumentParser(usage=usage, - description=__description, - epilog=__author_info, - version='%(prog)s ' + __version,) + description=__description, + epilog=__author_info, + version='%(prog)s ' + __version,) parser.add_argument('-R', '--res_folder', metavar="", - dest='res_folder', required=True, - help='path to the project res folder') + dest='res_folder', required=True, + help='path to the project res folder') parser.add_argument('-S', '--svg_folder', metavar="", - dest='svg_folder', default='.', - help='folder that contains all the svg files to be converted') + dest='svg_folder', default='.', + help='folder that contains all the svg files to be converted') parser.add_argument('-I', '--inkscape_path', metavar="", - dest='ink_path', default='inkscape', - help='path of Inkscape executable') + dest='ink_path', default='inkscape', + help='path of Inkscape executable') + + parser.add_argument('-d', '--baseline-density', metavar="", + dest='baseline_density', choices=['mdpi', 'hdpi'], default='mdpi', + help='the baseline density to generate the drawables from') parser.add_argument('-D', '--dry_run', - dest='dry', action='store_const', const=True, - help='performs a dry run') + dest='dry', action='store_const', const=True, + help='performs a dry run') parser.add_argument('-F', '--single_file', metavar="", - dest='file_name', - help='name of the file, if you want to convert only one file') + dest='file_name', + help='name of the file, if only one file is to be converted') return parser