From 68e35a4d401bbf6eb590fa727c541e3b62edad78 Mon Sep 17 00:00:00 2001 From: Xaver K Date: Mon, 29 Nov 2021 21:33:05 +0100 Subject: [PATCH] Removed explicit choice of font. Added Skout.spec for pyinstaller. --- .github/workflows/tagged_release.yaml | 2 +- .gitignore | 1 - Skout.spec | 40 +++++++++++++++++ SkoutPage.py | 62 ++++++-------------------- TeamA_v_TeamB-01_01_2021.pdf | Bin 15178 -> 14751 bytes 5 files changed, 54 insertions(+), 51 deletions(-) create mode 100644 Skout.spec diff --git a/.github/workflows/tagged_release.yaml b/.github/workflows/tagged_release.yaml index ed66169..7197b3a 100644 --- a/.github/workflows/tagged_release.yaml +++ b/.github/workflows/tagged_release.yaml @@ -46,7 +46,7 @@ jobs: pip install -r requirements.txt - name: Build with pyinstaller run: | - pyinstaller --onefile Skout.py + pyinstaller --onefile Skout.spec - name: Compress shell: bash diff --git a/.gitignore b/.gitignore index b726cd7..27be104 100644 --- a/.gitignore +++ b/.gitignore @@ -10,7 +10,6 @@ __pycache__ *.pdf !TeamA_v_TeamB-01_01_2021.pdf -Skout.spec build* dist* Data diff --git a/Skout.spec b/Skout.spec new file mode 100644 index 0000000..fbfe913 --- /dev/null +++ b/Skout.spec @@ -0,0 +1,40 @@ +# -*- mode: python ; coding: utf-8 -*- + + +block_cipher = None + + +a = Analysis(['Skout.py'], + pathex=[], + binaries=[], + datas=[], + hiddenimports=[], + hookspath=[], + hooksconfig={}, + runtime_hooks=[], + excludes=[], + win_no_prefer_redirects=False, + win_private_assemblies=False, + cipher=block_cipher, + noarchive=False) +pyz = PYZ(a.pure, a.zipped_data, + cipher=block_cipher) + +exe = EXE(pyz, + a.scripts, + a.binaries, + a.zipfiles, + a.datas, + [], + name='Skout', + debug=False, + bootloader_ignore_signals=False, + strip=False, + upx=True, + upx_exclude=[], + runtime_tmpdir=None, + console=True, + disable_windowed_traceback=False, + target_arch=None, + codesign_identity=None, + entitlements_file=None ) diff --git a/SkoutPage.py b/SkoutPage.py index 0f05a64..1bd2313 100644 --- a/SkoutPage.py +++ b/SkoutPage.py @@ -139,7 +139,7 @@ def makeRouteArrow(self, origin, nodes, arrowLength=15): def drawPlay(self, x0, y0, x1, y1, index): # draw play Number - self.d.setFont(self.boldFont, 30) + # self.d.setFont(self.boldFont, 30) self.d.setStrokeColor('black') self.d.setFillColor('black') self.d.drawString(x0, y1, '#' + str(index + 1)) @@ -171,43 +171,6 @@ def drawPlay(self, x0, y0, x1, y1, index): LOSPositions[i][1] + y * yard2Pixels] for [x, y] in routePoints] self.makeRouteArrow(LOSPositions[i], routePoints, 15) - # p = self.d.beginPath() - # p.moveTo(*LOSPositions[i]) - - # for j in range(len(routePoints)): - # xCoord = LOSPositions[i][0] + routePoints[j][0] * yard2Pixels - # yCoord = LOSPositions[i][1] + routePoints[j][1] * yard2Pixels - # if(i == 0 or i == 1): # invert x for A and C Receiver - # xCoord = LOSPositions[i][0] - routePoints[j][0] * yard2Pixels - # p.lineTo(xCoord, yCoord) - - # self.d.drawPath(p) - - # # draw shape at the end - # j = len(routePoints)-1 - # xCoord = LOSPositions[i][0] + routePoints[j][0] * yard2Pixels - # yCoord = LOSPositions[i][1] + routePoints[j][1] * yard2Pixels - # if(i == 0 or i == 1): # invert x for A and C Receiver - # xCoord = LOSPositions[i][0] - routePoints[j][0] * yard2Pixels - # p.circle(xCoord, yCoord, 15) - - # arrow = copy.deepcopy(self.arrowHead) - # arrow.append(draw.Lines(-0.1, -0.5, -0.1, 0.5, 0.9, 0, fill=routeColors[i], close=True)) - # # make path with arrowHead at the end - # p = draw.Path(stroke=routeColors[i], stroke_width=routeStrokeWidth, fill='none', - # marker_end=arrow) - # # move to start position of player - # p.M(*LOSPositions[i]) - # # lines according to route - # for j in range(len(routePoints)): - # xCoord = LOSPositions[i][0] + routePoints[j][0] * yard2Pixels - # yCoord = LOSPositions[i][1] + routePoints[j][1] * yard2Pixels - # if(i == 0 or i == 1): # invert x for A and C Receiver - # xCoord = LOSPositions[i][0] - routePoints[j][0] * yard2Pixels - # # move path by making line - # p.L(xCoord, yCoord) - # # add path - # self.d.append(p) # draw the player self.d.setStrokeColor('black') @@ -243,37 +206,38 @@ def drawTile(self, x0, y0, x1, y1, index): statsBegin = (x0 + statsBorder, y1 - drawArea[1] - statsBorder) statsTextSize = 30 statsTop = statsBegin[1] - statsTextSize / 1.5 + self.d.setFontSize(statsTextSize) # down counters downCountX = statsBegin[0] + 80 downCountersText = ("1st:", "2nd:", "3rd:", "4th:", "PAT:") for i in range(len(downCountersText)): - self.d.setFont(self.boldFont, statsTextSize) + # self.d.setFont(self.boldFont, statsTextSize) self.d.drawString(statsBegin[0], statsTop - i * statsTextSize, downCountersText[i]) if (index < numberOfPlays): - self.d.setFont(self.font, statsTextSize) + # self.d.setFont(self.font, statsTextSize) self.d.drawString(downCountX, statsTop - i * statsTextSize, str(self.stats.downStats[index][i])) # 2nd stats column: total and strong sides column2X = downCountX + 80 column2ValueX = column2X + 160 #total - self.d.setFont(self.boldFont, statsTextSize) + # self.d.setFont(self.boldFont, statsTextSize) self.d.drawString(column2X, statsTop, "Total:") if (index < numberOfPlays): - self.d.setFont(self.font, statsTextSize) + # self.d.setFont(self.font, statsTextSize) self.d.drawString(column2ValueX, statsTop, str(self.stats.occurences[index])) # strongsides and clipnumbers - self.d.setFont(self.boldFont, statsTextSize) + # self.d.setFont(self.boldFont, statsTextSize) self.d.drawString(column2X, statsTop - statsTextSize, "SS left:") self.d.drawString(column2X, statsTop - 2 * statsTextSize, "SS right:") self.d.drawString(column2X, statsTop - 4 * statsTextSize, "vid#:") if (index < numberOfPlays): - self.d.setFont(self.font, statsTextSize) + # self.d.setFont(self.font, statsTextSize) self.d.drawString(column2ValueX, statsTop - statsTextSize, str(self.stats.strongSides[index][0])) self.d.drawString(column2ValueX, statsTop - 2 * statsTextSize, str(self.stats.strongSides[index][1])) self.d.drawString(column2X + 3 * statsTextSize, statsTop - 4 * statsTextSize, self.listAsComma(self.stats.clipNumbers[index])) @@ -282,22 +246,22 @@ def drawTile(self, x0, y0, x1, y1, index): column3X = column2ValueX + 50 column3ValueX = column3X + 70 # distance - self.d.setFont(self.boldFont, statsTextSize) + # self.d.setFont(self.boldFont, statsTextSize) self.d.drawString(column3X, statsTop, "Dist:") self.d.drawString(column3X, statsTop - statsTextSize, "Yds:") self.d.drawString(column3X, statsTop - 2 * statsTextSize, "Rec:") if (index < numberOfPlays): - self.d.setFont(self.font, statsTextSize) + # self.d.setFont(self.font, statsTextSize) self.d.drawString(column3ValueX, statsTop, self.listAsComma(self.stats.distances[index])) self.d.drawString(column3ValueX, statsTop - statsTextSize, self.listAsComma(self.stats.progressions[index])) self.d.drawString(column3ValueX, statsTop - 2 * statsTextSize, self.listAsComma(self.stats.intRecs[index])) # formations formationsY = statsBegin[1] + 2*statsBorder - self.d.setFont(self.boldFont, statsTextSize) + # self.d.setFont(self.boldFont, statsTextSize) self.d.drawString(statsBegin[0], formationsY, "Form.:") if (index < numberOfPlays): - self.d.setFont(self.font, statsTextSize) + # self.d.setFont(self.font, statsTextSize) self.d.drawString(statsBegin[0] + 3.5 * statsTextSize, formationsY, self.listAsComma(self.stats.formations[index])) # draw the play itself @@ -321,7 +285,7 @@ def drawTile(self, x0, y0, x1, y1, index): halfFontSize = self.getTextBounds('5', statsTextSize)[1] / 2. distanceMarkerPadding = 1.5 * statsTextSize - self.d.setFont(self.font, statsTextSize) + # self.d.setFont(self.font, statsTextSize) self.d.setFillColor('gray') self.d.drawRightString(topCorner[0] + distanceMarkerPadding, lowCorner[1] + fiveYards - halfFontSize, '5') self.d.drawRightString(topCorner[0] + distanceMarkerPadding, lowCorner[1] + tenYards - halfFontSize, '10') diff --git a/TeamA_v_TeamB-01_01_2021.pdf b/TeamA_v_TeamB-01_01_2021.pdf index 84eb518e8b8c28d43df210d1f7cd8e88996c4c72..e92f8566c0502aa972240093c8ee8611f93ea841 100644 GIT binary patch literal 14751 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