0

added option to QuadtreeGen to specify tile output directory

This commit is contained in:
Aaron Griffith
2011-03-02 08:29:33 -05:00
parent 5a043ab3d6
commit be26dc702b

View File

@@ -82,7 +82,7 @@ def catch_keyboardinterrupt(func):
return newfunc return newfunc
class QuadtreeGen(object): class QuadtreeGen(object):
def __init__(self, worldobj, destdir, depth=None, imgformat=None, optimizeimg=None, lighting=False, night=False, spawn=False): def __init__(self, worldobj, destdir, depth=None, tiledir="tiles", imgformat=None, optimizeimg=None, lighting=False, night=False, spawn=False):
"""Generates a quadtree from the world given into the """Generates a quadtree from the world given into the
given dest directory given dest directory
@@ -103,6 +103,7 @@ class QuadtreeGen(object):
# Make the destination dir # Make the destination dir
if not os.path.exists(destdir): if not os.path.exists(destdir):
os.mkdir(destdir) os.mkdir(destdir)
self.tiledir = tiledir
if depth is None: if depth is None:
# Determine quadtree depth (midpoint is always 0,0) # Determine quadtree depth (midpoint is always 0,0)
@@ -169,7 +170,7 @@ class QuadtreeGen(object):
# Write a blank image # Write a blank image
blank = Image.new("RGBA", (1,1)) blank = Image.new("RGBA", (1,1))
tileDir = os.path.join(self.destdir, "tiles") tileDir = os.path.join(self.destdir, self.tiledir)
if not os.path.exists(tileDir): os.mkdir(tileDir) if not os.path.exists(tileDir): os.mkdir(tileDir)
blank.save(os.path.join(tileDir, "blank."+self.imgformat)) blank.save(os.path.join(tileDir, "blank."+self.imgformat))
@@ -235,7 +236,7 @@ class QuadtreeGen(object):
def _increase_depth(self): def _increase_depth(self):
"""Moves existing tiles into place for a larger tree""" """Moves existing tiles into place for a larger tree"""
getpath = functools.partial(os.path.join, self.destdir, "tiles") getpath = functools.partial(os.path.join, self.destdir, self.tiledir)
# At top level of the tree: # At top level of the tree:
# quadrant 0 is now 0/3 # quadrant 0 is now 0/3
@@ -262,7 +263,7 @@ class QuadtreeGen(object):
def _decrease_depth(self): def _decrease_depth(self):
"""If the map size decreases, or perhaps the user has a depth override """If the map size decreases, or perhaps the user has a depth override
in effect, re-arrange existing tiles for a smaller tree""" in effect, re-arrange existing tiles for a smaller tree"""
getpath = functools.partial(os.path.join, self.destdir, "tiles") getpath = functools.partial(os.path.join, self.destdir, self.tiledir)
# quadrant 0/3 goes to 0 # quadrant 0/3 goes to 0
# 1/2 goes to 1 # 1/2 goes to 1
@@ -301,7 +302,7 @@ class QuadtreeGen(object):
rowend = rowstart + 4 rowend = rowstart + 4
# This image is rendered at: # This image is rendered at:
dest = os.path.join(self.destdir, "tiles", *(str(x) for x in path)) dest = os.path.join(self.destdir, self.tiledir, *(str(x) for x in path))
#logging.debug("this is rendered at %s", dest) #logging.debug("this is rendered at %s", dest)
# And uses these chunks # And uses these chunks
@@ -322,7 +323,7 @@ class QuadtreeGen(object):
""" """
for path in iterate_base4(zoom): for path in iterate_base4(zoom):
# This image is rendered at: # This image is rendered at:
dest = os.path.join(self.destdir, "tiles", *(str(x) for x in path[:-1])) dest = os.path.join(self.destdir, self.tiledir, *(str(x) for x in path[:-1]))
name = str(path[-1]) name = str(path[-1])
yield pool.apply_async(func=render_innertile, args= (dest, name, self.imgformat, self.optimizeimg)) yield pool.apply_async(func=render_innertile, args= (dest, name, self.imgformat, self.optimizeimg))
@@ -403,7 +404,7 @@ class QuadtreeGen(object):
pool.join() pool.join()
# Do the final one right here: # Do the final one right here:
render_innertile(os.path.join(self.destdir, "tiles"), "base", self.imgformat, self.optimizeimg) render_innertile(os.path.join(self.destdir, self.tiledir), "base", self.imgformat, self.optimizeimg)
def _get_range_by_path(self, path): def _get_range_by_path(self, path):
"""Returns the x, y chunk coordinates of this tile""" """Returns the x, y chunk coordinates of this tile"""