fix: details

This commit is contained in:
2026-02-27 15:40:52 +08:00
parent 23d6d81532
commit 0e2f214552
5 changed files with 64 additions and 51 deletions
+8 -8
View File
@@ -12,8 +12,8 @@ export const DECK_DEFAULTS = {
SIZE_H: 86,
GRID_W: 5,
GRID_H: 8,
BLEED: '1',
PADDING: '2',
BLEED: 1,
PADDING: 2,
FONT_SIZE: 3
} as const;
@@ -23,8 +23,8 @@ export interface DeckState {
sizeH: number;
gridW: number;
gridH: number;
bleed: string;
padding: string;
bleed: number;
padding: number;
fontSize: number;
fixed: boolean;
src: string;
@@ -61,8 +61,8 @@ export interface DeckActions {
setSizeH: (size: number) => void;
setGridW: (grid: number) => void;
setGridH: (grid: number) => void;
setBleed: (bleed: string) => void;
setPadding: (padding: string) => void;
setBleed: (bleed: number) => void;
setPadding: (padding: number) => void;
setFontSize: (size: number) => void;
// 数据设置
@@ -161,11 +161,11 @@ export function createDeckStore(
setState({ gridH: grid });
updateDimensions();
};
const setBleed = (bleed: string) => {
const setBleed = (bleed: number) => {
setState({ bleed });
updateDimensions();
};
const setPadding = (padding: string) => {
const setPadding = (padding: number) => {
setState({ padding });
updateDimensions();
};
+8 -15
View File
@@ -3,8 +3,8 @@ import type { Dimensions } from '../types';
export interface DimensionOptions {
sizeW: number;
sizeH: number;
bleed: string;
padding: string;
bleed: number;
padding: number;
gridW: number;
gridH: number;
fontSize?: number;
@@ -14,28 +14,21 @@ export interface DimensionOptions {
* 解析卡牌尺寸和网格配置
*/
export function calculateDimensions(options: DimensionOptions): Dimensions {
const [bleedW, bleedH] = options.bleed.includes('x')
? options.bleed.split('x').map(Number)
: [Number(options.bleed), Number(options.bleed)];
const [padW, padH] = options.padding.includes('x')
? options.padding.split('x').map(Number)
: [Number(options.padding), Number(options.padding)];
// 实际卡牌尺寸(含出血)
const cardWidth = options.sizeW + bleedW * 2;
const cardHeight = options.sizeH + bleedH * 2;
const cardWidth = options.sizeW + options.bleed * 2;
const cardHeight = options.sizeH + options.bleed * 2;
// 网格区域尺寸(减去 padding)
const gridAreaWidth = options.sizeW - padW * 2;
const gridAreaHeight = options.sizeH - padH * 2;
const gridAreaWidth = options.sizeW - options.padding * 2;
const gridAreaHeight = options.sizeH - options.padding * 2;
// 每个网格单元的尺寸(mm
const cellWidth = gridAreaWidth / options.gridW;
const cellHeight = gridAreaHeight / options.gridH;
// 网格区域起点(相对于卡牌左上角,含 bleed 和 padding
const gridOriginX = bleedW + padW;
const gridOriginY = bleedH + padH;
const gridOriginX = options.bleed + options.padding;
const gridOriginY = options.bleed + options.padding;
return {
cardWidth,