def recto(self, lang): return self.templates[0].render( l=self.layout, css=self.css, width=self.w, height=self.h, int={ 'rect': { 'pos': [self.w, self.rectPosY], 'size': [10, 35.187] }, 'text': { 'pos': [self.w + 5, self.rectPosY + 35.187 / 2], 'content': self.planetName[lang].upper() }, 'translate': -5 }, ellipse={ 'pos': self.c, 'rad': self.radius }, rad='M{},{} v{} h{}'.format( self.c[0], self.c[1] - self.radius[1], self.radius[1], self.radius[0] ), name={ 'pos': self.c, 'content': self.symbol, 'fontSize': self.fontSizes[0], }, w=self.wPos, h=self.hPos, area={ 'pos': [self.c[0], self.c[1] + self.radius[1] + ((self.c[1] - self.radius[1] - self.m[1]) / 2)], 'content': self.texts[lang]['recto']['area'].format( symbol=self.symbol, planetName=self.planetName[lang], ) }, range={ 'pos': [self.c[0], self.h - self.m[1]], 'content': '{0}0 -> {0}{1}'.format(self.symbol, len(self.formats) - 1), }, radius=[ { 'pos': [self.c[0] + self.radius[0] / 2, self.c[1] - self.m[0] / 2], 'content': stringifyNumber(self.realRadius[0], lang), }, { 'pos': [self.c[0] + self.m[0] / 2, self.c[1] - self.radius[1] / 2], 'content': stringifyNumber(self.realRadius[1], lang), } ] )
def recto(self, lang, index): wNotation = stringifyNumber(self.formats[index][0], lang) hNotation = stringifyNumber(self.formats[index][1], lang) remaining = len(self.formats) - index return self.templates[0].render( l=self.layout, css=self.css, width=self.w, height=self.h, name={ 'pos': [self.w / 2, self.h / 2], 'fontSize': self.fontSizes[0 if remaining > 6 else 7 - remaining], 'content': self.symbol + str(index) }, w={ 'pos': self.wPos, 'content': wNotation + ' mm' }, h={ 'pos': self.hPos, 'content': hNotation + ' mm' }, title={ 'pos': [self.w / 2, self.h - self.m[1] / 2], 'content': self.texts[lang]['recto']['title'].format( symbol=self.symbol, symbolName=self.symbolName, number=index, numberName=numberToCharacter(index, lang), ), }, textBlock={ 'pos': [self.m[0], self.h - self.m[1] - 3 * self.fontSizes[8] * 1.25], 'size': [self.w - self.m[0] * 2, 2 * self.fontSizes[8] * 1.25], 'paragraphs': self.texts[lang]['recto']['textBlock'].format( symbol=self.symbol, symbolName=self.symbolName, number=index, numberName=numberToCharacter(index, lang), width=wNotation, height=hNotation, ).splitlines(), }, rect=None if remaining > 6 else { 'width': self.formats[index][0], 'height': self.formats[index][1], 'pos': [ (self.w - self.formats[index][0]) / 2, (self.h - self.formats[index][1]) / 2, ] } )
def __init__(self, templates, lang, texts, planetsInfo, data): self.template = templates.get_template('planet.html.jinja2') self.lang = lang self.root = '../../' if lang != 'fr' else '../' self.planets = planetsInfo self.symbol = data['symbol'] self.metaDesc = texts['metaDesc'] self.footer = { 'title': texts['footer']['title'], 'content': markdown(texts['footer']['content']) } self.name = data['name']['en'] self.home = texts['home']['title'] self.globalTitle = texts['globalTitle'] self.title = texts['planets']['title'].format( name=data['name'][lang], symbol=data['symbol'], symbolName=data['symbolName'], ) self.standard = texts['planets']['standard'].format( symbol=data['symbol']) self.areaLost = texts['planets']['areaLost'] self.formatList = texts['planets']['formatList'] self.content = self.getMainContent(texts['planets'], data, lang) self.formats = [{ 'width': stringifyNumber(format[0], lang), 'height': stringifyNumber(format[1], lang), 'areaLost': stringifyNumber(round(data['areaLost'][i], 3), lang), 'content': '{symbol}{i} -> {width} × {height} mm'.format( symbol=self.symbol, i=i, width=format[0], height=format[1], ) } for i, format in enumerate(data['formats_mm'])] format = data['serieAequi']['4']['size'] ratio = format[1] / km2mm(data['size_km'][1]) radius = ratio * km2mm(data['radius'][1]) fontSizes = [round(radius * sqrt1_2**n, 3) for n in range(21)] self.svg = { 'width': format[0], 'height': format[1], 'lines': self.svgLines(format), 'names': self.svgTexts(format, fontSizes), }
def recto(self, lang): sizeKm = [stringifyNumber(side, lang) for side in self.sizeKm] formats = [ '{}{} │ {} × {} mm'.format( self.symbol, i if i > 9 else str(i) + ' ', stringifyNumber(self.formats[i][0], lang), stringifyNumber(self.formats[i][1], lang) ) for i in range(len(self.formats)) ] formats = formats[:len(formats) - 11] \ + ['', self.texts[lang]['affixable'], ''] \ + [format + ' (A{})'.format(i) for i, format in enumerate(formats[-11:])] return self.templates[0].render( l=self.layout, css=self.css, width=self.w, height=self.h, textBlock={ 'pos': [self.m[0], self.m[1]], 'size': [self.w - self.m[0] * 2, self.h - self.m[1] * 2], 'paragraphs': [ { 'lines': ['{} ({})'.format(self.symbol, self.symbolName), '0-{}'.format(len(self.formats) - 1)], 'klass': 'end', 'fontSize': 7 }, { 'lines': [self.planetName[lang].upper()], 'fontSize': 24.5 }, { 'lines': ['{} <== {} === {} >- {}'.format( self.planetName[lang], self.greekGod[lang], self.ancientGreekName, self.symbol )], }, { 'lines': self.texts[lang]['infos'].format( rx=stringifyNumber(self.realRadius[0], lang), ry=stringifyNumber(self.realRadius[1], lang), area=stringifyNumber(self.area, lang), planetName=self.planetName[lang], width=sizeKm[0], height=sizeKm[1], a4equiNumber=self.n, a4equiW=self.w, a4equiH=self.h, ).splitlines() }, { 'lines': formats } ] } )
def verso(self, lang, index): remaining = len(self.formats) - index if (remaining <= 6): w = self.formats[index][0] h = self.formats[index][1] tx = (self.w - w) / 2 ty = (self.h - h) / 2 fs = 7 - remaining else: remaining = remaining if remaining < 17 else 17 w = self.w h = self.h tx = 0 ty = 0 fs = 0 return self.templates[1].render( l=self.layout, css=self.css, width= self.w, height= self.h, reverseTranslate=-self.w, translate='{} {}'.format(tx, ty), textBlock={ 'pos': [self.m[0], self.h - self.m[1] - 3 * self.fontSizes[8] * 1.25], 'size': [self.w - self.m[0] * 2, 3 * self.fontSizes[8] * 1.25], 'paragraphs': self.texts[lang]['verso']['textBlock'].format( symbol=self.symbol, numberDistrib=stringifyNumber(self.distrib[index]['total'], lang), lost=stringifyNumber(self.lost[index], lang) ).splitlines(), }, lines=self.homothetyLines(w, h, remaining), names=self.homothetyTexts(index, w, h, remaining, fs) )
def verso(self, lang): sizeKm = [stringifyNumber(side, lang) for side in self.sizeKm] return self.templates[1].render( l=self.layout, css=self.css, width=self.w, height=self.h, int={ 'rect': { 'pos': [-10, self.rectPosY], 'size': [10, 35.187] }, 'text': { 'pos': [-5, self.rectPosY + 35.187 / 2], 'content': self.planetName[lang].upper() }, 'translate': 5 }, w={ 'pos': self.wPos, 'content': sizeKm[0], }, h={ 'pos': [self.m[0], self.c[1]], 'content': sizeKm[1], }, names={ 'pos': [self.c[0], self.h - self.m[1]], 'content': '{} <== {} === {} >- {}'.format( self.planetName[lang], self.greekGod[lang], self.ancientGreekName, self.symbol ), }, textBlock={ 'pos': [self.m[0] * 2, self.m[1] * 3], 'size': [self.w - self.m[0] * 4, self.h - self.m[1] * 5], 'paragraphs': [ { 'lines': ['{} ({})'.format(self.symbol, self.symbolName), '0-{}'.format(len(self.formats) - 1)], 'klass': 'end', 'fontSize': self.fontSizes[6] }, { 'lines': [self.planetName[lang].upper()], 'fontSize': self.fontSizes[2] }, { 'lines': self.texts[lang]['verso']['textBlock'].format( rx=stringifyNumber(self.realRadius[0], lang), ry=stringifyNumber(self.realRadius[1], lang), area=stringifyNumber(self.area, lang), planetName=self.planetName[lang], width=sizeKm[0], height=sizeKm[1], a4equiNumber=self.n, a4equiW=self.w, a4equiH=self.h, ).splitlines() } ] } )