diff --git a/overviewer.py b/overviewer.py index 71e0eab..31b4c2d 100755 --- a/overviewer.py +++ b/overviewer.py @@ -100,13 +100,14 @@ def main(): parser.add_option("--imgformat", dest="imgformat", help="The image output format to use. Currently supported: png(default), jpg.", configFileOnly=True ) parser.add_option("--imgquality", dest="imgquality", default=95, help="Specify the quality of image output when using imgformat=\"jpg\".", type="int", configFileOnly=True) parser.add_option("--bg_color", dest="bg_color", help="Configures the background color for the GoogleMap output. Specify in #RRGGBB format", configFileOnly=True, type="string", default="#1A1A1A") - parser.add_option("--optimize-img", dest="optimizeimg", help="If using png, perform image file size optimizations on the output. Specify 1 for pngcrush, 2 for pngcrush+optipng+advdef. This may double (or more) render times, but will produce up to 30% smaller images. NOTE: requires corresponding programs in $PATH or %PATH%", configFileOnly=True) + parser.add_option("--optimize-img", dest="optimizeimg", help="If using png, perform image file size optimizations on the output. Specify 1 for pngcrush, 2 for pngcrush+advdef and 3 for pngcrush-advdef with more agressive settings. This may double (or more) render times, but will produce up to 30% smaller images. NOTE: requires corresponding programs in $PATH or %PATH%", configFileOnly=True) parser.add_option("--web-assets-hook", dest="web_assets_hook", help="If provided, run this function after the web assets have been copied, but before actual tile rendering begins. It should accept a QuadtreeGen object as its only argument.", action="store", metavar="SCRIPT", type="function", configFileOnly=True) parser.add_option("--web-assets-path", dest="web_assets_path", help="Specifies a non-standard web_assets directory to use. Files here will overwrite the default web assets.", metavar="PATH", type="string", configFileOnly=True) parser.add_option("--textures-path", dest="textures_path", help="Specifies a non-standard textures path, from which terrain.png and other textures are loaded.", metavar="PATH", type="string", configFileOnly=True) parser.add_option("-q", "--quiet", dest="quiet", action="count", default=0, help="Print less output. You can specify this option multiple times.") parser.add_option("-v", "--verbose", dest="verbose", action="count", default=0, help="Print more output. You can specify this option multiple times.") parser.add_option("--skip-js", dest="skipjs", action="store_true", help="Don't output marker.js or regions.js") + parser.add_option("--no-signs", dest="nosigns", action="store_true", help="Don't output signs to markers.js") parser.add_option("--display-config", dest="display_config", action="store_true", help="Display the configuration parameters, but don't render the map. Requires all required options to be specified", commandLineOnly=True) #parser.add_option("--write-config", dest="write_config", action="store_true", help="Writes out a sample config file", commandLineOnly=True) diff --git a/overviewer_core/data/web_assets/overviewer.js b/overviewer_core/data/web_assets/overviewer.js index 467affb..615e78a 100644 --- a/overviewer_core/data/web_assets/overviewer.js +++ b/overviewer_core/data/web_assets/overviewer.js @@ -598,6 +598,11 @@ var overviewer = { var items = []; for (i in overviewerConfig.objectGroups.signs) { var signGroup = overviewerConfig.objectGroups.signs[i]; + // don't create an option for this group if empty + if (overviewer.collections.markers[signGroup.label].length == 0) { + continue; + } + var iconURL = signGroup.icon; if(!iconURL) { iconURL = overviewerConfig.CONST.image.defaultMarker; @@ -616,7 +621,11 @@ var overviewer = { } }); } - overviewer.util.createDropDown('Signposts', items); + + // only create drop down if there's used options + if (items.length > 0) { + overviewer.util.createDropDown('Signposts', items); + } } // if there are any regions data, lets show the option to hide/show them. diff --git a/overviewer_core/googlemap.py b/overviewer_core/googlemap.py index d853534..7d4dc7e 100644 --- a/overviewer_core/googlemap.py +++ b/overviewer_core/googlemap.py @@ -19,7 +19,7 @@ import stat import cPickle import Image import shutil -from time import strftime, gmtime +from time import strftime, localtime import json import util @@ -67,7 +67,8 @@ class MapGen(object): image format, and world. Note:tiledir for each quadtree should be unique. By default the tiledir is determined by the rendermode""" - self.skipjs = configInfo.get('skipjs', None) + self.skipjs = configInfo.get('skipjs', False) + self.nosigns = configInfo.get('nosigns', False) self.web_assets_hook = configInfo.get('web_assets_hook', None) self.web_assets_path = configInfo.get('web_assets_path', None) self.bg_color = configInfo.get('bg_color') @@ -135,8 +136,7 @@ class MapGen(object): indexpath = os.path.join(self.destdir, "index.html") index = open(indexpath, 'r').read() - index = index.replace( - "{time}", str(strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()))) + index = index.replace("{time}", str(strftime("%a, %d %b %Y %H:%M:%S %Z", localtime()))) versionstr = "%s (%s)" % (overviewer_version.VERSION, overviewer_version.HASH[:7]) index = index.replace("{version}", versionstr) @@ -159,13 +159,18 @@ class MapGen(object): # we need to merge self.world.POI with the persistant data in world.PersistentData self.world.POI += filter(lambda x: x['type'] != 'spawn', self.world.persistentData['POI']) + + if self.nosigns: + markers = filter(lambda x: x['type'] != 'sign', self.world.POI) + else: + markers = self.world.POI # write out the default marker table with open(os.path.join(self.destdir, "markers.js"), 'w') as output: output.write("overviewer.collections.markerDatas.push([\n") - for marker in self.world.POI: + for marker in markers: output.write(json.dumps(marker)) - if marker != self.world.POI[-1]: + if marker != markers[-1]: output.write(",") output.write("\n") output.write("]);\n") diff --git a/overviewer_core/optimizeimages.py b/overviewer_core/optimizeimages.py index 01799e4..4422feb 100644 --- a/overviewer_core/optimizeimages.py +++ b/overviewer_core/optimizeimages.py @@ -28,7 +28,7 @@ def check_programs(level): result = filter(lambda x: os.path.exists(os.path.join(x, prog)), path) return len(result) != 0 - for prog,l in [(pngcrush,1), (optipng,2), (advdef,2)]: + for prog,l in [(pngcrush,1), (advdef,2)]: if l <= level: if (not exists_in_path(prog)) and (not exists_in_path(prog + ".exe")): raise Exception("Optimization prog %s for level %d not found!" % (prog, l)) @@ -46,8 +46,7 @@ def optimize_image(imgpath, imgformat, optimizeimg): if optimizeimg >= 2: # the "-nc" it's needed to no broke the transparency of tiles - subprocess.Popen([optipng, "-nc", imgpath], stderr=subprocess.STDOUT, - stdout=subprocess.PIPE).communicate()[0] - subprocess.Popen([advdef, "-z4",imgpath], stderr=subprocess.STDOUT, + recompress_option = "-z2" if optimizeimg == 2 else "-z4" + subprocess.Popen([advdef, recompress_option,imgpath], stderr=subprocess.STDOUT, stdout=subprocess.PIPE).communicate()[0] diff --git a/sample.settings.py b/sample.settings.py index 863b266..8c85a3e 100644 --- a/sample.settings.py +++ b/sample.settings.py @@ -92,9 +92,11 @@ imgformat = "jpg" ################################################################################ ### optimizeimg ## If using png, perform image file size optimizations on the output. Specify 1 -## for pngcrush, 2 for pngcrush+optipng+advdef. This may double (or more) -## render times, but will produce up to 30% smaller images. NOTE: requires -## corresponding programs in $PATH or %PATH% +## for pngcrush, 2 for pngcrush+advdef, 3 for pngcrush+advdef with more agressive +## options. Option 1 gives around 19% of reduction, option 2 gives around 21% +## (it doubles the optimizing time) and option 3 gives around 23% (it doubles, +## again, the optimizing time). Using this option may double (or more) +## render times. NOTE: requires corresponding programs in $PATH or %PATH% ## Default: not set ## Type: integer ## Example: