Repository navigation
feat(core): Pattern / Shading の解決と scn・sh 対応 - #759
Conversation
Coverage Report
File Details
|
|
最終コミット
現在のmainを起点とする3コミットで、競合はありません。クローズ済みの #758 はそのまま残しています。 |
There was a problem hiding this comment.
Note
Copilot was unable to complete this review at the selected tier due to model policy or plan restrictions.
🟡 Changes recommended
警告メッセージ(PATTERN_NOT_FOUND)にパターン名(/Name)が含まれておらず、複数パターンを扱う場面で原因特定とデバッグが難しくなるという指摘が残っているためです。
1 open issue
What changed in this PR
@pdfmod/core の content stream 実行に向けて、現在スコープの /Resources から /Pattern・/Shading を解決し、scn/SCN の名前参照解決と sh オペレータ対応で種別・主要属性を取得できるようにする変更です。
Changes:
/Pattern・/Shadingの定義解決(間接参照・数値配列要素の参照解決を含む)と型表現を追加PaintResourcesを導入し、scn/SCNとshが現在スコープの定義へ到達できるように operator registry へ統合- 仕様(docs/specs)とガイド(docs/guides)を追加・更新し、解決範囲と回復方針を明文化
| File | Description |
|---|---|
| packages/core/src/pdf/errors/warning/index.ts | Pattern/Shading 関連の warning code を追加します。 |
| packages/core/src/index.ts | PaintResources・PdfPattern・PdfShading などの公開エクスポートを追加します。 |
| packages/core/src/document/resources/xobject/index.ts | XObject の属性解決を ResourceParameters に委譲して共通化します。 |
| packages/core/src/document/resources/shading/index.ts | ShadingType(1〜7)の判別と共通属性の読み取り・保持(参照解決含む)を実装します。 |
| packages/core/src/document/resources/shading/__tests__/shading.type.test-d.ts | Shading の型レベル制約(メッシュ種別は stream 必須等)を型テストで検証します。 |
| packages/core/src/document/resources/shading/__tests__/shading.error.test.ts | Shading の不正属性や要件違反に対する警告・回復をテストします。 |
| packages/core/src/document/resources/shading/__tests__/shading.basic.test.ts | Shading の主要属性取得や間接参照を含む基本動作をテストします。 |
| packages/core/src/document/resources/pattern/index.ts | PatternType(1/2) の判別と tiling/shading pattern の主要属性読み取り(Shading 解決含む)を追加します。 |
| packages/core/src/document/resources/pattern/__tests__/pattern.type.test-d.ts | Pattern 種別ごとの型の絞り込みと属性差を型テストで検証します。 |
| packages/core/src/document/resources/pattern/__tests__/pattern.error.test.ts | Pattern の不正/未対応/必須欠落などに対する警告・回復をテストします。 |
| packages/core/src/document/resources/pattern/__tests__/pattern.basic.test.ts | Tiling/Shading pattern の主要属性と間接参照解決の基本動作をテストします。 |
| packages/core/src/document/resources/parameters/index.ts | リソース辞書属性と数値配列要素の参照解決を行う共通ユーティリティを追加します。 |
| packages/core/src/document/resources/parameters/__tests__/parameters.basic.test.ts | ResourceParameters の座標抽出・null保持・参照解決エラー等の基本挙動をテストします。 |
| packages/core/src/content-stream/paint-resources/index.ts | 実行前に Pattern/Shading を解決して同期オペレータへ渡す PaintResources を追加します。 |
| packages/core/src/content-stream/paint-resources/__tests__/setup-paint.ts | PaintResources と operator registry を組み立てる統合テスト用セットアップを追加します。 |
| packages/core/src/content-stream/paint-resources/__tests__/paint-resources.integration.test.ts | scn/SCN の名前解決、q/Q の保存復元、スコープ境界などの統合動作をテストします。 |
| packages/core/src/content-stream/paint-resources/__tests__/paint-resources.error.test.ts | 名前オペランド拒否、参照エラー伝播、配列要素参照エラー等のエラー系をテストします。 |
| packages/core/src/content-stream/operators/shading/sh/index.ts | sh オペレータの追加(/Shading 名の解決と警告/エラー方針)を実装します。 |
| packages/core/src/content-stream/operators/shading/sh/__tests__/sh.basic.test.ts | sh の既定登録、警告/エラー、状態不変性などをテストします。 |
| packages/core/src/content-stream/operators/color/selection/index.ts | sc/scn/SC/SCN で Pattern 名を解決し、PaintType と基底色空間等の整合性を検証します。 |
| packages/core/src/content-stream/operators/color/color-operators/index.ts | 色オペレータ登録 API を拡張して PaintResources を伝搬できるようにします。 |
| packages/core/src/content-stream/operator-registry/index.ts | createDefault に PaintResources を追加し sh を既定レジストリへ登録します。 |
| packages/core/src/content-stream/color-space-resources/__tests__/setup-color-space.ts | color-space 系テストでも PaintResources を準備して registry に注入するよう更新します。 |
| packages/core/src/content-stream/color-space-resources/__tests__/color-space.pattern.test.ts | Pattern 色空間のテストを PaintResources 前提の実装に合わせて更新します。 |
| packages/core/src/content-stream/color-operation/index.ts | Pattern PaintType と Pattern base color space の整合性チェックを追加します。 |
| docs/specs/04_resources_graphics_state.md | Pattern/Shading の解決・警告方針・sh の扱いを仕様として追記します。 |
| docs/guides/resources.html | Pattern/Shading 解説への導線と PaintResources の利用手順を追記します。 |
| docs/guides/README.md | guides の目次に patterns-shadings ガイドを追加します。 |
| docs/guides/patterns-shadings.html | Pattern/Shading の仕組み・具体例・対応範囲を解説する新規ガイドを追加します。 |
Review effort: Balanced
There was a problem hiding this comment.
Note
Copilot was unable to complete this review at the selected tier due to model policy or plan restrictions.
🟢 Approval recommended
Pattern/Shading の事前解決と scn/SCN・sh の名前解決追加に対して、型テスト・基本/統合/エラー系テストと回復方針を含む仕様/ガイド更新まで揃っており、未解決の指摘事項が見当たらないためです。
No open issues 🎉
1 resolved since last review
Review effort: Balanced

scn/SCNのパターン名を現在の/Resourcesから解決し、種別と主要属性を取得できるようにします。shも既定レジストリへ登録します。/Pattern・/Shadingのカテゴリ、各定義、主要属性と数値配列要素の間接参照に対応。/Functionは元の参照・辞書・配列を保持。関数評価、メッシュ復号、実際の塗りは対象外。docs/guides/patterns-shadings.htmlにPDFの仕組みと具体例を追加。PDF例は静的な構文色分け、文字サイズはJavaScriptなしで切り替えます。検証: 通常テスト 4,582件、型テスト 96件、型チェック、ビルド、lint が成功。lintの警告2件は既存の
.github/scripts/comment-pr-explain.cjsのものです。実PDFバイト列・実ObjectStoreで正常系、未知の種別、壊れた参照、スコープ分離、q/Qを確認しています。ガイドは読み取り専用の独立静的監査済み。ガイド単体の実画面確認は、Chromiumの起動制限とブラウザのローカルURL制限により未実施です。Rust側には対応する命令実行層がないため、変更はTypeScript側です。
現在の main を起点に作成した、Issue #677 の対応です。履歴更新前のクローズ済みPR #758を引き継いでいます。
根拠:
docs/specs/04_resources_graphics_state.md§3.4〜3.6。Closes #677