Quadrícula a la previsualització a partir de ×2
This commit is contained in:
@@ -11,6 +11,7 @@ from __future__ import annotations
|
|||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import tkinter as tk
|
import tkinter as tk
|
||||||
|
from math import ceil
|
||||||
from tkinter import filedialog, messagebox, ttk
|
from tkinter import filedialog, messagebox, ttk
|
||||||
|
|
||||||
from PIL import Image, ImageTk
|
from PIL import Image, ImageTk
|
||||||
@@ -26,6 +27,8 @@ PREVIEW_DEBOUNCE_MS = 200
|
|||||||
DEFAULT_ZOOM = 3 # zoom inicial cuando no hay estado guardado
|
DEFAULT_ZOOM = 3 # zoom inicial cuando no hay estado guardado
|
||||||
AUTO_MAX_SCALE = 8 # techo del fit automático
|
AUTO_MAX_SCALE = 8 # techo del fit automático
|
||||||
MANUAL_MAX_SCALE = 16 # techo cuando el usuario pulsa +
|
MANUAL_MAX_SCALE = 16 # techo cuando el usuario pulsa +
|
||||||
|
GRID_MIN_SCALE = 2 # zoom mínimo para mostrar la cuadrícula
|
||||||
|
GRID_COLOR = "#dd2222"
|
||||||
|
|
||||||
|
|
||||||
class FontGenApp(tk.Tk):
|
class FontGenApp(tk.Tk):
|
||||||
@@ -225,6 +228,22 @@ class FontGenApp(tk.Tk):
|
|||||||
self.preview_canvas.create_image(0, 0, anchor="nw", image=self._preview_img_tk)
|
self.preview_canvas.create_image(0, 0, anchor="nw", image=self._preview_img_tk)
|
||||||
self.preview_canvas.configure(scrollregion=(0, 0, preview.width, preview.height))
|
self.preview_canvas.configure(scrollregion=(0, 0, preview.width, preview.height))
|
||||||
|
|
||||||
|
# Cuadrícula a partir de un cierto zoom: a 1x los píxeles del glifo
|
||||||
|
# y los de la línea son del mismo grosor y se confunden.
|
||||||
|
if scale >= GRID_MIN_SCALE:
|
||||||
|
cols = result.columns
|
||||||
|
rows_n = ceil(len(result.chars) / cols)
|
||||||
|
cell_w = result.box_width * scale
|
||||||
|
cell_h = result.box_height * scale
|
||||||
|
grid_w = cols * cell_w
|
||||||
|
grid_h = rows_n * cell_h
|
||||||
|
for c in range(cols + 1):
|
||||||
|
x = c * cell_w
|
||||||
|
self.preview_canvas.create_line(x, 0, x, grid_h, fill=GRID_COLOR, width=1)
|
||||||
|
for r in range(rows_n + 1):
|
||||||
|
y = r * cell_h
|
||||||
|
self.preview_canvas.create_line(0, y, grid_w, y, fill=GRID_COLOR, width=1)
|
||||||
|
|
||||||
info = (f"{len(result.chars)} chars · "
|
info = (f"{len(result.chars)} chars · "
|
||||||
f"caja {result.box_width}×{result.box_height} px · "
|
f"caja {result.box_width}×{result.box_height} px · "
|
||||||
f"bitmap {base_w}×{base_h} px (×{scale})")
|
f"bitmap {base_w}×{base_h} px (×{scale})")
|
||||||
|
|||||||
Reference in New Issue
Block a user