mirror of
https://github.com/stronk-dev/Guitar-Sheet-Parser.git
synced 2025-07-05 08:25:09 +02:00
Added checks to stop resizing down if we are creating too much widespace or if the font has decreased too much
This commit is contained in:
parent
682278fcd5
commit
88ef505d50
@ -211,6 +211,7 @@ class Song:
|
|||||||
self.rightMargin = int(configObj['rightMargin'])
|
self.rightMargin = int(configObj['rightMargin'])
|
||||||
self.fontMetadata = ImageFont.truetype(configObj['metafontfamily'], int(configObj['metaFontWeight']))
|
self.fontMetadata = ImageFont.truetype(configObj['metafontfamily'], int(configObj['metaFontWeight']))
|
||||||
self.fontSize = int(configObj['songFontWeight'])
|
self.fontSize = int(configObj['songFontWeight'])
|
||||||
|
self.originalFontSize = int(configObj['songFontWeight'])
|
||||||
self.fontLyrics = ImageFont.truetype(configObj['lyricfontfamily'], self.fontSize)
|
self.fontLyrics = ImageFont.truetype(configObj['lyricfontfamily'], self.fontSize)
|
||||||
self.fontTablature = ImageFont.truetype(configObj['tablaturefontfamliy'], self.fontSize)
|
self.fontTablature = ImageFont.truetype(configObj['tablaturefontfamliy'], self.fontSize)
|
||||||
self.configObj = configObj
|
self.configObj = configObj
|
||||||
@ -285,6 +286,30 @@ class Song:
|
|||||||
currentPageIt = 0
|
currentPageIt = 0
|
||||||
if not amountOfPages:
|
if not amountOfPages:
|
||||||
return False
|
return False
|
||||||
|
# Stop resizing if the font size is becoming too small
|
||||||
|
fontDifference = self.originalFontSize - self.fontSize
|
||||||
|
if fontDifference > self.originalFontSize / 2:
|
||||||
|
print("The original fontSize has already decreased from {} to {}, so we will stop resizing the image down".format(self.originalFontSize, self.fontSize))
|
||||||
|
return False
|
||||||
|
# Stop resizing if we are creating too much widespace on the width
|
||||||
|
smallestWhitespace = self.imageHeight
|
||||||
|
biggestWhitespace = -1
|
||||||
|
for page in self.pages:
|
||||||
|
for section in page.sections:
|
||||||
|
whitespaceOnWidth = self.imageWidth - self.leftMargin - self.rightMargin - section.expectedWidth
|
||||||
|
if whitespaceOnWidth < smallestWhitespace:
|
||||||
|
smallestWhitespace = whitespaceOnWidth
|
||||||
|
if whitespaceOnWidth > biggestWhitespace:
|
||||||
|
biggestWhitespace = whitespaceOnWidth
|
||||||
|
# Sections vary in width, some are very small to begin with
|
||||||
|
# Since (almost empty) lines will result in large whitespace sizes, we are less strict on checking that
|
||||||
|
if biggestWhitespace / self.imageWidth > 0.9:
|
||||||
|
print("Stopping resizing down, since the smallest section has {}% whitespace on the width of the image".format((smallestWhitespace / self.imageWidth )* 100))
|
||||||
|
return False
|
||||||
|
# But the largest section on the page should be able to fit at least half of the available page
|
||||||
|
if smallestWhitespace / self.imageWidth > 0.5:
|
||||||
|
print("Stopping resizing down, since we largest section has {}% whitespace on the width of the image".format((biggestWhitespace / self.imageWidth )* 100))
|
||||||
|
return False
|
||||||
# get first section on next page, if we have a next page to begin with
|
# get first section on next page, if we have a next page to begin with
|
||||||
while currentPageIt < amountOfPages - 1:
|
while currentPageIt < amountOfPages - 1:
|
||||||
curPage = self.pages[currentPageIt]
|
curPage = self.pages[currentPageIt]
|
||||||
|
4
main.py
4
main.py
@ -37,6 +37,9 @@ def main():
|
|||||||
print("Start parsing of file '{}'...".format(song.inputFile))
|
print("Start parsing of file '{}'...".format(song.inputFile))
|
||||||
# Initialise internal data structures
|
# Initialise internal data structures
|
||||||
song.initSections()
|
song.initSections()
|
||||||
|
if not song.isParsed:
|
||||||
|
print("Song was not initialized correctly. Skipping...")
|
||||||
|
continue
|
||||||
# Fit all sections on each page, resizes down if it does not fit on width
|
# Fit all sections on each page, resizes down if it does not fit on width
|
||||||
song.fitSectionsByWidth()
|
song.fitSectionsByWidth()
|
||||||
# Prerender: calculate Pages, and move sections into Pages
|
# Prerender: calculate Pages, and move sections into Pages
|
||||||
@ -47,7 +50,6 @@ def main():
|
|||||||
song.resizeAllSections(-1)
|
song.resizeAllSections(-1)
|
||||||
song.sectionsToPages()
|
song.sectionsToPages()
|
||||||
# Parse as PNG a4
|
# Parse as PNG a4
|
||||||
if song.isParsed:
|
|
||||||
# Create subdirectory where we will output our images
|
# Create subdirectory where we will output our images
|
||||||
targetDirectory = song.outputLocation + "-a4-png"
|
targetDirectory = song.outputLocation + "-a4-png"
|
||||||
print("Successfully parsed file. Writing output to '{}'\n".format(targetDirectory))
|
print("Successfully parsed file. Writing output to '{}'\n".format(targetDirectory))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user