Skip to content

Commit

Permalink
fix: font render bounds
Browse files Browse the repository at this point in the history
  • Loading branch information
lumixraku committed Oct 15, 2024
1 parent 047c9f2 commit c5105b7
Showing 1 changed file with 22 additions and 11 deletions.
33 changes: 22 additions & 11 deletions packages/engine-render/src/components/sheets/extensions/font.ts
Original file line number Diff line number Diff line change
Expand Up @@ -150,8 +150,8 @@ export class Font extends SheetExtension {
ctx.restore();
}

renderFontEachCell(renderFontContext: IRenderFontContext, row: number, col: number, fontMatrix: ObjectMatrix<IFontCacheItem>) {
const { ctx, viewRanges, diffRanges, spreadsheetSkeleton, cellInfo } = renderFontContext;
renderFontEachCell(renderFontCtx: IRenderFontContext, row: number, col: number, fontMatrix: ObjectMatrix<IFontCacheItem>) {
const { ctx, viewRanges, diffRanges, spreadsheetSkeleton, cellInfo } = renderFontCtx;

//#region merged cell
let { startY, endY, startX, endX } = cellInfo;
Expand Down Expand Up @@ -203,23 +203,30 @@ export class Font extends SheetExtension {
ctx.beginPath();

//#region text overflow
renderFontContext.overflowRectangle = overflowRange;
renderFontContext.cellData = cellData;
renderFontContext.startX = startX;
renderFontContext.startY = startY;
renderFontContext.endX = endX;
renderFontContext.endY = endY;
this._clipTextOverflow(renderFontContext, row, col, fontMatrix);
renderFontCtx.overflowRectangle = overflowRange;
renderFontCtx.cellData = cellData;
renderFontCtx.startX = startX;
renderFontCtx.startY = startY;
renderFontCtx.endX = endX;
renderFontCtx.endY = endY;
this._setFontRenderBounds(renderFontCtx, row, col, fontMatrix);
//#endregion

ctx.translate(startX + FIX_ONE_PIXEL_BLUR_OFFSET, startY + FIX_ONE_PIXEL_BLUR_OFFSET);
this._renderDocuments(ctx, fontsConfig, startX, startY, endX, endY, row, col, spreadsheetSkeleton.overflowCache);
this._renderDocuments(ctx, fontsConfig, renderFontCtx.startX, renderFontCtx.startY, renderFontCtx.endX, renderFontCtx.endY, row, col, spreadsheetSkeleton.overflowCache);

ctx.closePath();
ctx.restore();
};

private _clipTextOverflow(renderFontContext: IRenderFontContext, row: number, col: number, fontMatrix: ObjectMatrix<IFontCacheItem>) {
/**
* Change font render bounds, for overflow and filter icon & custom render.
* @param renderFontContext
* @param row
* @param col
* @param fontMatrix
*/
private _setFontRenderBounds(renderFontContext: IRenderFontContext, row: number, col: number, fontMatrix: ObjectMatrix<IFontCacheItem>) {
const { ctx, scale, overflowRectangle, rowHeightAccumulation, columnWidthAccumulation, cellData } = renderFontContext;
let { startX, endX, startY, endY } = renderFontContext;

Expand Down Expand Up @@ -305,6 +312,10 @@ export class Font extends SheetExtension {
// for normal cell, forbid text overflow cellarea
ctx.clip();
}
renderFontContext.startX = startX;
renderFontContext.startY = startY;
renderFontContext.endX = endX;
renderFontContext.endY = endY;
}

private _renderDocuments(
Expand Down

0 comments on commit c5105b7

Please sign in to comment.