1
0
Fork 0

Compare commits

...

2 Commits

Author SHA1 Message Date
ptrcnull 3d088365be fix: move preview above settings
otherwise it's a preview for ants
2024-05-08 22:32:31 +02:00
ptrcnull ca62f5aab1 fix: rotate preview to be human-readable 2024-05-08 22:29:50 +02:00
2 changed files with 18 additions and 8 deletions

View File

@ -16,7 +16,7 @@ app = flask.Flask(__name__)
class Renderer(object):
INCH_PER_MM = 0.039
DPI = 300
def __init__(self, size=(36, 89)):
def __init__(self, preview=False, size=(36, 89)):
width, height = [int(s * self.INCH_PER_MM * self.DPI) for s in size]
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)
context = cairo.Context(surface)
@ -38,6 +38,16 @@ class Renderer(object):
with open(name, 'wb') as f:
self.surface.write_to_png(f)
def get_preview(self):
new_surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, self.width, self.height)
context = cairo.Context(new_surface)
context.translate(0, self.height)
# 360 no scope
context.rotate(-90.0*math.pi/180.0)
context.set_source_surface(self.surface, 0, 0)
context.paint()
return new_surface.write_to_png()
def render_text(self, text, fontname, x, y, html=False):
print("Fontname:", fontname)
self.context.save()
@ -73,10 +83,10 @@ def index():
def stuff_preview(size):
text = flask.request.args.get('text')
html = flask.request.args.get('html') == '1'
renderer = Renderer()
renderer = Renderer(preview=True)
renderer.render_text(text, 'Sans {}'.format(size), 0, -1, html)
preview = renderer.surface.write_to_png()
preview = renderer.get_preview()
return flask.Response(preview, mimetype='image/png')
DELAY = 5

View File

@ -56,12 +56,12 @@
<h1>Hackerspace Printing System For Printing Labels</h1>
</div>
<h3>Box 'o Stuff Label <small>For SAMLA boxes with common equipment</small></h3>
<div>
<h4>Preview</h4>
<img id="preview" src="/api/preview/70/?text=dupa" class="img-responsive" alt="Label preview" /><br />
</div>
<div class="row">
<div class="col-md-2">
<h4>Preview</h4>
<img id="preview" src="/api/preview/70/?text=dupa" class="img-responsive" alt="Label preview" /><br />
</div>
<div class="col-md-3">
<div class="col-md-5">
<h4>Settings</h4>
<div class="form-group">
<label for="fontsize">Font Size</label>