class XCUtils::XCUtilsResize
Public Instance Methods
check_configuration_file()
click to toggle source
# File lib/XCUtils/xcutils_resize.rb, line 27 def check_configuration_file # check for configuration file config_path = File.join(source,".xcutils-config") @options_merge = options if File.exists?(config_path) original_options = options say "found configuration file", nil defaults = ParseConfig.new(config_path).params || {} defaults = defaults.map{ |key,value| {key => value.to_f} }.reduce(:merge) @options_merge = original_options.merge( defaults ) end # print current configuration say_status "iphone 1x scale", @options_merge[:scale_iphone_1x], :blue say_status "iphone 2x scale", @options_merge[:scale_iphone_2x], :blue say_status "iphone 3x scale", @options_merge[:scale_iphone_3x], :blue say_status "ipad 1x scale", @options_merge[:scale_ipad_1x], :blue say_status "ipad 2x scale", @options_merge[:scale_ipad_2x], :blue say_status "create image assets:", @options_merge[:create_image_assets], :blue say_status "create xcatlas:", @options_merge[:create_xcatlas], :blue say_status "DRY RUN - no files will be created!", nil, :red if @options_merge[:dry_run] end
create_output_directory()
click to toggle source
# File lib/XCUtils/xcutils_resize.rb, line 55 def create_output_directory say_status "create output directory", nil, :yellow name = File.basename target Dir.mkdir(target) unless Dir.exists?(target) end
xcassets_directory()
click to toggle source
# File lib/XCUtils/xcutils_resize.rb, line 61 def xcassets_directory # support single file or directory source source_elements = File.directory?(source) ? Dir.entries(source) : [ File.basename(source) ] # each source file source_elements.each do |f| next if f == "." || f == ".." || f == ".DS_Store" || f == ".xcutils-config" fn = f.gsub("@3x","").gsub("~ipad","").gsub("@2x","") # remove extensions fn = File.basename(fn,File.extname(fn)) # remove file extension say_status "# #{fn}", nil, :magenta # create folder base_name = File.basename(target) imageset_folder = @options_merge[:create_image_assets] ? File.join(target,"#{fn}.imageset") : target imageset_folder = File.join(target,"#{base_name}.atlas") if @options_merge[:create_xcatlas] Dir.mkdir(imageset_folder) unless Dir.exists?(imageset_folder) say_status "packing into xcasset:", imageset_folder, :blue if @options_merge[:create_image_assets] say_status "packing into xcatlas:", imageset_folder, :blue if @options_merge[:create_xcatlas] # load image img = Magick::Image.read(File.join(source,f)).first # create @3x version say_status "create @3x version", "#{fn}@3x", :yellow unless @options_merge[:dry_run] img_3x = XCUtilsImage.scale_image(img,@options_merge[:scale_iphone_3x]) img_3x.write(File.join(imageset_folder,"#{fn}@3x.png")) end content_iphone_3x = {"idiom" => "iphone", "scale" => "3x", "filename" => "#{fn}@3x.png"} # create ipad retina version say_status "create ipad retina version", "#{fn}@2x~ipad", :yellow unless @options_merge[:dry_run] img_ipad_2x = XCUtilsImage.scale_image(img,@options_merge[:scale_ipad_2x]) img_ipad_2x.write(File.join(imageset_folder,"#{fn}@2x~ipad.png")) end content_ipad_2x = {"idiom" => "ipad", "scale" => "2x", "filename" => "#{fn}@2x~ipad.png"} # create ipad non retina version say_status "create ipad non retina version", "#{fn}~ipad", :yellow unless @options_merge[:dry_run] img_ipad_1x = XCUtilsImage.scale_image(img,@options_merge[:scale_ipad_1x]) img_ipad_1x.write(File.join(imageset_folder,"#{fn}~ipad.png")) end content_ipad = {"idiom" => "ipad", "scale" => "1x", "filename" => "#{fn}~ipad.png"} # create iphone retina version say_status "create iphone retina version", "#{fn}@2x", :yellow unless @options_merge[:dry_run] img_iphone_2x = XCUtilsImage.scale_image(img,@options_merge[:scale_iphone_2x]) img_iphone_2x.write(File.join(imageset_folder,"#{fn}@2x.png")) end content_iphone_2x = {"idiom" => "iphone", "scale" => "2x", "filename" => "#{fn}@2x.png"} # create iphone non retina version say_status "create iphone non retina version", "#{fn}", :yellow unless @options_merge[:dry_run] img_iphone_1x = XCUtilsImage.scale_image(img,@options_merge[:scale_iphone_1x]) img_iphone_1x.write(File.join(imageset_folder,"#{fn}.png")) end content_iphone = {"idiom" => "iphone", "scale" => "1x", "filename" => "#{fn}.png"} # for imageassets create json if @options_merge[:create_image_assets] && !@options_merge[:dry_run] contents_json = JSON.pretty_generate( {"images" => [content_iphone, content_iphone_2x, content_iphone_3x, content_ipad, content_ipad_2x], "info" => {"version" => 1, "author" => "xcode"} } ) File.open(File.join(imageset_folder,"Contents.json"),"w") do |f| f.write(contents_json) end end end end