Skip to content

Task #1585: HWPX 캡션 내 플로팅 이미지 렌더링 지원#1590

Merged
edwardkim merged 1 commit into
edwardkim:develfrom
postmelee:local/task1585
Jun 27, 2026
Merged

Task #1585: HWPX 캡션 내 플로팅 이미지 렌더링 지원#1590
edwardkim merged 1 commit into
edwardkim:develfrom
postmelee:local/task1585

Conversation

@postmelee

@postmelee postmelee commented Jun 27, 2026

Copy link
Copy Markdown
Collaborator

요약

  • 캡션 paragraph 내부 TopAndBottom picture를 caption 영역 기준으로 렌더링합니다.
  • depth 1 중첩 표 caption 중 TopAndBottom picture가 있는 경우만 caption 렌더링을 허용합니다.
  • top-level / nested table caption 플로팅 이미지 회귀 테스트를 추가했습니다.

배경

#1551은 #1270의 (a) 범위였던 캡션 내 인라인 이미지 스레딩을 복구했습니다.

이번 PR은 후속 이슈 #1585의 범위인 (b) 캡션 내 플로팅 이미지 렌더링을 다룹니다. #1270 첨부 샘플의 image2 / SEOUL MY SOUL 로고는 내부 표의 TOP caption 안에 있는 textWrap="TOP_AND_BOTTOM" 그림이므로, #1551 merge 이후에도 별도 처리가 필요했습니다.

구현

  • layout_caption()에서 caption paragraph 조판 후 TopAndBottom picture 전용 렌더링 helper를 호출합니다.
  • Task #1270: 캡션 내 인라인 이미지 렌더링 복구 #1551 인라인 경로에서 이미 등록된 control은 중복 방출하지 않습니다.
  • caption 배치용 picture clone은 non-TAC로 정규화해 기존 layout_picture() 경로를 재사용합니다.
  • nested table caption은 depth == 1이고 caption 안에 TopAndBottom picture가 있는 경우에만 렌더링합니다.
  • 중첩 caption도 기존 caption 센티널인 cell_index=65534를 유지합니다.

검증

  • cargo fmt --check
  • cargo test --test issue_1585_caption_floating_image
  • cargo test --test issue_1270_caption_inline_image
  • cargo test --test issue_530
  • cargo test --test issue_1459_topbottom_picture_reflow
  • cargo test --test issue_1139_inline_picture_duplicate
  • cargo test --test issue_1352_table_cell_tac_picture_text
  • cargo test --test issue_1486_hwpx_partial_tac_table
  • cargo test --lib
  • cargo clippy --lib -- -D warnings

실샘플 확인

로컬 #1270 첨부 샘플의 page 0 SVG에서 <image> 개수가 #1551 merge 직후 1개에서 이번 변경 후 2개로 증가하는 것을 확인했습니다. 추가 방출된 image는 image2 / SEOUL MY SOUL 로고입니다.

시각 검증

로컬 rhwp-studio 웹서버에서 작업지시자가 #1270 첨부 샘플을 직접 로드해 시각 검증을 완료했습니다.

image

범위

이번 PR은 #1585의 캡션 내부 TopAndBottom 플로팅 이미지 렌더링에 집중합니다. caption 내부 모든 floating object의 일반화나 caption 재귀 렌더링 확장은 포함하지 않습니다.

@edwardkim edwardkim self-requested a review June 27, 2026 08:38
@edwardkim edwardkim added the enhancement New feature or request label Jun 27, 2026
@edwardkim edwardkim added this to the v1.0.0 milestone Jun 27, 2026
edwardkim added a commit that referenced this pull request Jun 27, 2026
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@edwardkim edwardkim merged commit c60c009 into edwardkim:devel Jun 27, 2026
10 checks passed
@edwardkim

Copy link
Copy Markdown
Owner

merge 완료했습니다 (merge commit c60c009, origin/devel 포함 검증). 감사합니다, @postmelee!

#1270 진단에서 (a) 인라인=#1551, (b) 플로팅=#1585로 나눴던 후속 중 (b) 범위를 정확히 다룬 PR입니다.

검증:

  • 신규 issue_1585(2): 수정 revert 시 FAILED → 적용 시 pass (caption TopAndBottom picture 방출, red→green)
  • 전체 cargo test --tests FAILED 0건(lib 1959), golden SVG 불변 8/8로 기존 렌더 무영향
  • 중복 방출 방지(인라인 경로 get_inline_shape_position.is_some() skip)와 depth==1 caption 가드가 깔끔
  • PR 본문 작업지시자 시각 검증 완료 + CI Canvas visual diff pass

#1270 캡션 이미지 시리즈가 (a)+(b)로 마무리됐습니다. 좋은 작업 감사합니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants