Small fix to alignement
parent
e5140a460a
commit
5efae09664
|
|
@ -225,24 +225,26 @@ import matplotlib.pyplot as plt
|
||||||
import matplotlib.colors as mcolors
|
import matplotlib.colors as mcolors
|
||||||
from highlight_text import ax_text
|
from highlight_text import ax_text
|
||||||
|
|
||||||
def render_score_text(label, score, error, width_px, fontsize=18,
|
def color(score):
|
||||||
bg_color=(255, 255, 255, 255),
|
|
||||||
with_error=True):
|
|
||||||
# 1. Calculate Color Gradient
|
|
||||||
t = max(0.0, min(1.0, float(score) / 4.0))
|
t = max(0.0, min(1.0, float(score) / 4.0))
|
||||||
t = t*1.5 - 0.25
|
t = t*1.5 - 0.25
|
||||||
t = max(0.0, min(1.0, t))
|
t = max(0.0, min(1.0, t))
|
||||||
red = 200 * (1 - t)
|
red = 200 * (1 - t)
|
||||||
green = 150 * t
|
green = 150 * t
|
||||||
hex_color = mcolors.to_hex((red/255, green/255, 0))
|
return mcolors.to_hex((red/255, green/255, 0))
|
||||||
|
|
||||||
|
def render_score_text(label, score, error, width_px, fontsize=18,
|
||||||
|
bg_color=(255, 255, 255, 255),
|
||||||
|
with_error=True):
|
||||||
|
# 1. Calculate Color Gradient
|
||||||
|
|
||||||
# 2. Build highlight-text String & Properties
|
# 2. Build highlight-text String & Properties
|
||||||
# Wrap colored parts in < >
|
# Wrap colored parts in < >
|
||||||
score_str = f"{label} ; Note : <{score}>"
|
score_str = f"{label} Note : <{score}>"
|
||||||
hl_props = [{"color": hex_color, "fontweight": "bold"}]
|
hl_props = [{"color": color(score), "fontweight": "bold"}]
|
||||||
|
|
||||||
if error and error != "null" and with_error:
|
if error and error != "null" and with_error:
|
||||||
score_str += f" | <Error: {error}>"
|
score_str += f" <{error}>"
|
||||||
hl_props.append({"color": "orange", "fontweight": "bold"})
|
hl_props.append({"color": "orange", "fontweight": "bold"})
|
||||||
|
|
||||||
# 3. Wrap Text
|
# 3. Wrap Text
|
||||||
|
|
@ -250,19 +252,16 @@ def render_score_text(label, score, error, width_px, fontsize=18,
|
||||||
fig_width = width_px / dpi
|
fig_width = width_px / dpi
|
||||||
chars_per_line = int(fig_width * 10)
|
chars_per_line = int(fig_width * 10)
|
||||||
|
|
||||||
# Note: Since there is no LaTeX anymore, standard textwrap works well here
|
# wrapped_text = textwrap.fill(score_str, width=chars_per_line)
|
||||||
import textwrap
|
|
||||||
wrapped_text = textwrap.fill(score_str, width=chars_per_line)
|
|
||||||
|
|
||||||
# 4. Render using highlight_text.ax_text
|
# fig_height = 0.4 + 0.2
|
||||||
num_lines = wrapped_text.count('\n') + 1
|
fig_height = 0.8
|
||||||
fig_height = num_lines * 0.4 + 0.2
|
|
||||||
|
|
||||||
fig, ax = plt.subplots(figsize=(fig_width, fig_height), dpi=dpi)
|
fig, ax = plt.subplots(figsize=(fig_width, fig_height), dpi=dpi)
|
||||||
ax.axis('off')
|
ax.axis('off')
|
||||||
|
|
||||||
# Replaces plt.text
|
# Replaces plt.text
|
||||||
ax_text(0.01, 0.95, wrapped_text,
|
ax_text(0.02, 0.98, score_str,
|
||||||
fontsize=fontsize,
|
fontsize=fontsize,
|
||||||
verticalalignment='top',
|
verticalalignment='top',
|
||||||
horizontalalignment='left',
|
horizontalalignment='left',
|
||||||
|
|
@ -270,7 +269,9 @@ def render_score_text(label, score, error, width_px, fontsize=18,
|
||||||
ax=ax)
|
ax=ax)
|
||||||
|
|
||||||
buf = io.BytesIO()
|
buf = io.BytesIO()
|
||||||
plt.savefig(buf, format='png', bbox_inches='tight', pad_inches=0.1, transparent=True)
|
# Issues with tight bbox_inches.
|
||||||
|
# plt.savefig(buf, format='png', bbox_inches='tight', pad_inches=0.05, transparent=True)
|
||||||
|
plt.savefig(buf, format='png', pad_inches=0.05, transparent=True)
|
||||||
plt.close(fig)
|
plt.close(fig)
|
||||||
buf.seek(0)
|
buf.seek(0)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ class CheckboxRenderer:
|
||||||
# Draw score boxes
|
# Draw score boxes
|
||||||
start_x = pos['w'] + 20
|
start_x = pos['w'] + 20
|
||||||
for val in SCORES:
|
for val in SCORES:
|
||||||
box = draw_checkbox(draw, start_x, pos['y'] + 5, BOX_SIZE, str(val))
|
box = draw_checkbox(draw, start_x, pos['y'] + 25, BOX_SIZE, str(val))
|
||||||
self.checkboxes.append({
|
self.checkboxes.append({
|
||||||
"type": "score", "label": self.label, "value": val,
|
"type": "score", "label": self.label, "value": val,
|
||||||
"rel_box": box # Will be adjusted for global Y later
|
"rel_box": box # Will be adjusted for global Y later
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ def detect_checks_and_notes(output_dir):
|
||||||
notes_img: RGBA image of manual notes (checks masked out)
|
notes_img: RGBA image of manual notes (checks masked out)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
names = ["Concat_annotated.pdf", "Concat_a.pdf"]
|
names = ["Concat_annotated.pdf"]
|
||||||
for name in names:
|
for name in names:
|
||||||
pdf_path = os.path.join(output_dir, name)
|
pdf_path = os.path.join(output_dir, name)
|
||||||
if os.path.exists(pdf_path):
|
if os.path.exists(pdf_path):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue