Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(16)

Unified Diff: ui/gfx/vector_icons/aggregate_vector_icons.py

Issue 2733823003: Move final vector icons out of ui/gfx/vector_icons/ and remove the (Closed)
Patch Set: fix deps Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/gfx/vector_icons/OWNERS ('k') | ui/gfx/vector_icons/business.icon » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/vector_icons/aggregate_vector_icons.py
diff --git a/ui/gfx/vector_icons/aggregate_vector_icons.py b/ui/gfx/vector_icons/aggregate_vector_icons.py
deleted file mode 100644
index 6b028fee7abcc09078d165555cabb2bfa934e546..0000000000000000000000000000000000000000
--- a/ui/gfx/vector_icons/aggregate_vector_icons.py
+++ /dev/null
@@ -1,236 +0,0 @@
-# Copyright 2015 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import fileinput
-import glob
-import optparse
-import os
-import shlex
-import sys
-import textwrap
-
-def AggregateVectorIconsLegacy(working_directory, file_list, output_cc,
- output_h):
- icon_list = []
- if file_list is None:
- # TODO(GYP_GONE): |file_list| is only None for GYP builds (where response
- # files are not supported), in which case we process all .icon files
- # contained within |working_directory| and all of its descendant
- # directories. This logic can be removed when GN is used everywhere.
- # See crbug.com/535386.
- for dirpath, dirnames, filenames in os.walk(working_directory):
- icon_list.extend(glob.glob(os.path.join(dirpath, "*.icon")))
- else:
- with open(file_list, 'r') as f:
- file_list_contents = f.read()
- icon_list = shlex.split(file_list_contents)
-
- input_header_template = open(os.path.join(working_directory,
- "vector_icons.h.template"))
- header_template_contents = input_header_template.readlines()
- input_header_template.close()
- output_header = open(output_h, "w")
- for line in header_template_contents:
- if not "TEMPLATE_PLACEHOLDER" in line:
- output_header.write(line)
- continue
-
- for icon_path in icon_list:
- # The icon name should be of the format "foo.icon" or "foo.1x.icon".
- (icon_name, extension) = os.path.splitext(os.path.basename(icon_path))
- (icon_name, scale_factor) = os.path.splitext(icon_name)
- if not scale_factor:
- output_header.write(" {},\n".format(icon_name.upper()))
- output_header.close()
-
- input_cc_template = open(
- os.path.join(working_directory, "vector_icons.cc.template"))
- cc_template_contents = input_cc_template.readlines()
- input_cc_template.close()
- output_cc = open(output_cc, "w")
- for line in cc_template_contents:
- if not "TEMPLATE_PLACEHOLDER" in line:
- output_cc.write(line)
- continue;
-
- for icon_path in icon_list:
- (icon_name, extension) = os.path.splitext(os.path.basename(icon_path))
- (icon_name, scale_factor) = os.path.splitext(icon_name)
- assert not scale_factor or scale_factor == ".1x"
- if (("1X" in line and scale_factor != ".1x") or
- (not "1X" in line and scale_factor == ".1x")):
- continue
-
- icon_file = open(icon_path)
- vector_commands = "".join(icon_file.readlines())
- icon_file.close()
- output_cc.write("ICON_TEMPLATE({}, {})\n".format(icon_name.upper(),
- vector_commands))
- output_cc.close()
-
-
-def Error(msg):
- print >> sys.stderr, msg
- sys.exit(1)
-
-
-def CamelCase(name, suffix):
- words = name.split('_')
- words = [w.capitalize() for w in words]
- return 'k' + ''.join(words) + suffix
-
-
-def AggregateVectorIcons(working_directory, file_list, output_cc, output_h,
- use_legacy_template):
- """Compiles all .icon files in a directory into two C++ files.
-
- Args:
- working_directory: The path to the directory that holds the .icon files
- and C++ templates.
- file_list: A file containing the list of vector icon files to process.
- Used for GN only (this argument defaults to None for GYP).
- output_cc: The path that should be used to write the .cc file.
- output_h: The path that should be used to write the .h file.
- use_legacy_template: If True, |output_cc| and |output_h| are generated
- using .template files which make use of the VectorIconId enum.
- """
-
- # TODO(tdanderson): Remove this code once all vector icons map to VectorIcon
- # constants rather than VectorIconId values.
- if use_legacy_template:
- AggregateVectorIconsLegacy(working_directory, file_list, output_cc,
- output_h)
- return
-
- # For each file in |file_list|, place it in |path_map| if its extension is
- # .icon or place it in |path_map_1x| if its extension is .1x.icon. The
- # two dictionaries map the icon's name to its path, e.g.,
- # path_map['cat'] = 'foo/bar/cat.icon'.
- icon_list = []
- with open(file_list, 'r') as f:
- file_list_contents = f.read()
- icon_list = shlex.split(file_list_contents)
-
- path_map = {}
- path_map_1x = {}
-
- for icon_path in icon_list:
- (icon_name, extension) = os.path.splitext(os.path.basename(icon_path))
- (icon_name, scale_factor) = os.path.splitext(icon_name)
-
- if (scale_factor and scale_factor != ".1x") or (extension != ".icon"):
- Error("Only filenames " + icon_name + ".icon or " + icon_name +
- ".1x.icon are allowed.")
-
- if not scale_factor and icon_name not in path_map:
- path_map[icon_name] = icon_path
- elif scale_factor and icon_name not in path_map_1x:
- path_map_1x[icon_name] = icon_path
- else:
- Error("A vector icon with name '" + icon_name + "' already exists.")
-
- for icon_1x in path_map_1x:
- if icon_1x not in path_map:
- Error("The file " + icon_1x + ".icon must be provided.")
-
- # Generate the file vector_icons.h which declares a variable for each
- # icon in |path_map|. The variable name is derived from the icon name by
- # converting to camel case, prepending 'k', and appending 'Icon'. For
- # example, the icon 'foo_bar' will have the variable name kFooBarIcon.
- input_header_template = open(os.path.join(working_directory,
- "vector_icons.h.template"))
- header_template_contents = input_header_template.readlines()
- input_header_template.close()
-
- output_header = open(output_h, "w")
- for line in header_template_contents:
- if not "TEMPLATE_PLACEHOLDER" in line:
- output_header.write(line)
- continue
-
- for icon in path_map:
- (icon_name, extension) = os.path.splitext(
- os.path.basename(path_map[icon]))
- (icon_name, scale_factor) = os.path.splitext(icon_name)
- output_header.write(
- "VECTOR_ICON_TEMPLATE_H({})\n".format(CamelCase(icon_name, "Icon")))
- output_header.close()
-
- # Copy the vector icon drawing commands from the .icon and .1x.icon files
- # and use them to generate vector_icons.cc, which defines the variables
- # declared in vector_icons.h.
- input_cc_template = open(
- os.path.join(working_directory, "vector_icons.cc.template"))
- cc_template_contents = input_cc_template.readlines()
- input_cc_template.close()
-
- output_cc = open(output_cc, "w")
- for line in cc_template_contents:
- if not "TEMPLATE_PLACEHOLDER" in line:
- output_cc.write(line)
- continue;
-
- for icon in path_map:
- (icon_name, extension) = os.path.splitext(
- os.path.basename(path_map[icon]))
- (icon_name, scale_factor) = os.path.splitext(icon_name)
-
- # Store the vector-drawing commands for foo_bar.icon in the temporary
- # variable kFooBarPath.
- icon_file = open(path_map[icon])
- vector_commands = "".join(icon_file.readlines())
- icon_file.close()
- output_cc.write("PATH_ELEMENT_TEMPLATE({}, {})\n".format(
- CamelCase(icon_name, "Path"), vector_commands))
-
- # Store the vector-drawing commands for foo_bar.1x.icon in the temporary
- # variable kFooBarPath1x, if the file exists.
- vector_commands_1x = None
- if (icon in path_map_1x):
- icon_file = open(path_map_1x[icon])
- vector_commands_1x = "".join(icon_file.readlines())
- icon_file.close()
- output_cc.write("PATH_ELEMENT_TEMPLATE({}, {})\n".format(
- CamelCase(icon_name, "Path1x"), vector_commands_1x))
-
- # Define the value of kFooBarIcon.
- third_arg = "nullptr" if vector_commands_1x is None else CamelCase(
- icon_name, "Path1x")
- output_cc.write("VECTOR_ICON_TEMPLATE({}, {}, {})\n".format(CamelCase(
- icon_name, "Icon"), CamelCase(icon_name, "Path"), third_arg))
-
- output_cc.close()
-
-
-def main():
- parser = optparse.OptionParser()
- parser.add_option("--working_directory",
- help="The directory to look for template C++ as well as "
- "icon files.")
- parser.add_option("--file_list",
- help="A response file containing the list of icon files "
- "to be processed (GN only). Defaults to None.",
- default=None)
- parser.add_option("--output_cc",
- help="The path to output the CC file to.")
- parser.add_option("--output_h",
- help="The path to output the header file to.")
- parser.add_option("--use_legacy_template",
- action="store_true",
- help="When set, the VectorIconId enum is populated "
- "with values corresponding to .icon files in "
- "the current working directory.",
- default=False)
-
- (options, args) = parser.parse_args()
-
- AggregateVectorIcons(options.working_directory,
- options.file_list,
- options.output_cc,
- options.output_h,
- options.use_legacy_template)
-
-
-if __name__ == "__main__":
- main()
« no previous file with comments | « ui/gfx/vector_icons/OWNERS ('k') | ui/gfx/vector_icons/business.icon » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698