add option to center 3d exports and enable it by default
This commit is contained in:
parent
7e206d9a0a
commit
ae8de940b8
3 changed files with 10 additions and 4 deletions
|
@ -58,6 +58,8 @@ class Command(BaseCommand):
|
|||
help=_('permissions, e.g. 2,3 or * for all permissions or 0 for none (default)'))
|
||||
parser.add_argument('--full-levels', action='store_const', const=True, default=False,
|
||||
help=_('render all levels completely'))
|
||||
parser.add_argument('--no-center', action='store_const', const=True, default=False,
|
||||
help=_('do not center the output'))
|
||||
|
||||
def handle(self, *args, **options):
|
||||
(minx, miny), (maxx, maxy) = Source.max_bounds()
|
||||
|
@ -65,7 +67,7 @@ class Command(BaseCommand):
|
|||
renderer = MapRenderer(level.pk, minx, miny, maxx, maxy, access_permissions=options['permissions'],
|
||||
full_levels=options['full_levels'])
|
||||
|
||||
stl = renderer.render(get_engine(options['filetype']))
|
||||
stl = renderer.render(get_engine(options['filetype']), center=not options['no_center'])
|
||||
data = stl.render()
|
||||
filename = os.path.join(settings.RENDER_ROOT,
|
||||
'level_%s_%s.%s' % (level.short_label,
|
||||
|
|
|
@ -11,13 +11,17 @@ from c3nav.mapdata.render.engines.base import FillAttribs, RenderEngine, StrokeA
|
|||
class Base3DEngine(RenderEngine):
|
||||
is_3d = True
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
def __init__(self, *args, center=True, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
self.vertices = []
|
||||
|
||||
self.np_scale = np.array((self.scale, self.scale, self.scale))
|
||||
self.np_offset = np.array((-self.minx * self.scale, -self.miny * self.scale, 0))
|
||||
if center:
|
||||
self.np_offset -= np.array(((self.minx - self.maxx) * self.scale / 2,
|
||||
(self.miny - self.maxy) * self.scale / 2,
|
||||
0))
|
||||
|
||||
def _add_geometry(self, geometry, fill: Optional[FillAttribs], stroke: Optional[StrokeAttribs], **kwargs):
|
||||
if fill is not None:
|
||||
|
|
|
@ -65,9 +65,9 @@ class MapRenderer:
|
|||
def cache_key(self):
|
||||
return self.update_cache_key + ':' + self.access_cache_key
|
||||
|
||||
def render(self, engine_cls):
|
||||
def render(self, engine_cls, center=True):
|
||||
engine = engine_cls(self.width, self.height, self.minx, self.miny,
|
||||
scale=self.scale, buffer=1, background='#DCDCDC')
|
||||
scale=self.scale, buffer=1, background='#DCDCDC', center=center)
|
||||
|
||||
# add no access restriction to “unlocked“ access restrictions so lookup gets easier
|
||||
unlocked_access_restrictions = self.unlocked_access_restrictions | set([None])
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue