Update coordinate system documentation to INCHES

Updated documentation and code comments to reflect INCHES as the
coordinate unit instead of 1/100 inch. Replaced special characters
causing issues with proper symbols (e.g., `—`, `≈`, `→`).

- Updated VB.NET code snippet to clarify INCHES usage.
- Revised `COPILOT_CONTEXT_EN.md` with updated formulas, unit
  comparison tables, and database storage format details.
- Corrected XML documentation for `SignatureDto` and `AnnotationDto`
  in C# to reflect INCHES as the unit.
- Clarified database schema documentation for coordinate fields.
- Improved unit conversion quick reference with accurate formulas.
- Added A4 page dimensions reference in multiple units.
- Marked completed tasks in "Session 12 Changes Already Completed"
  with detailed descriptions.
This commit is contained in:
2026-06-06 19:55:57 +02:00
parent cdc53c0bf7
commit 53004504bd

View File

@@ -1,4 +1,4 @@
# OPEN TASK - Session 12 (INCOMPLETE)
# OPEN TASK - Session 12 (INCOMPLETE)
## Task Description
Update coordinate system documentation in `COPILOT_CONTEXT_EN.md` and C# XML documentation files to reflect the correct unit (INCHES, not 1/100 inch).
@@ -17,12 +17,12 @@ Update coordinate system documentation in `COPILOT_CONTEXT_EN.md` and C# XML doc
**Code Evidence:**
```vb
'Breite und Höhe in Inches (4,5*5cm)
'Breite und Höhe in Inches (4,5*5cm)
Private Const SIGNATURE_WIDTH As Single = 1.77 ' 1.77 inches = 4.5cm
Private Const SIGNATURE_HEIGHT As Single = 1.96 ' 1.96 inches = 5cm
Sub LoadAnnotation(pElement As Signature, ...)
oAnnotation.Left = CSng(pElement.X) ' Direct assignment ? INCHES
oAnnotation.Left = CSng(pElement.X) ' Direct assignment INCHES
oAnnotation.Top = CSng(pElement.Y)
oAnnotation.Width = CSng(pElement.Width)
oAnnotation.Height = CSng(pElement.Height)
@@ -47,18 +47,18 @@ End Sub
**File:** `E:\TekH\Visual Studio\EnvelopeGenerator_BlazorUIDev\COPILOT_CONTEXT_EN.md`
**Action:** Replace section `## AnnotationDto — Coordinate System` (around line 43)
**Action:** Replace section `## AnnotationDto — Coordinate System` (around line 43)
**New Section Title:** `## SignatureDto / AnnotationDto — Coordinate System`
**New Section Title:** `## SignatureDto / AnnotationDto — Coordinate System`
**New Content Must Include:**
1. **Database storage format:** INCHES, top-left origin
2. **Source evidence:** VB.NET code snippet from `frmFieldEditor.vb`
3. **Conversion formulas:**
```
Inches ? DevExpress (DX): multiply by 100
Inches ? PDF Points: multiply by 72
Inches ? PDF.js Canvas: normalize to page size, then scale to pixels
Inches DevExpress (DX): multiply by 100
Inches PDF Points: multiply by 72
Inches PDF.js Canvas: normalize to page size, then scale to pixels
```
4. **Unit comparison table:**
@@ -66,11 +66,11 @@ End Sub
|--------|------|--------|------------------------|
| **GdPicture14** (Source) | **Inches** | Top-left | Database format |
| DevExpress (LEGACY) | 1/100 inch (DX) | Top-left | `x_DX = x_inches * 100` |
| PDF.js (NEW) | Pixels | Top-left | `normalize ? scale` |
| PDF.js (NEW) | Pixels | Top-left | `normalize scale` |
| PDF Points (iText7) | Points (1/72") | **Bottom-left** | `x_pt = x_inches * 72` + Y-flip |
| PSPDFKit (Web) | Points (1/72") | Top-left | `x_pt = x_inches * 72` |
**Problem:** Special characters (— and •) in file causing regex issues. Use exact string match or manual edit.
**Problem:** Special characters (— and •) in file causing regex issues. Use exact string match or manual edit.
---
@@ -113,7 +113,7 @@ public class SignatureDto
**Current (WRONG):**
```csharp
/// <b>Coordinate unit (X, Y):</b> Hundredths of an inch (1/100 inch ? 2.83 PDF points),
/// <b>Coordinate unit (X, Y):</b> Hundredths of an inch (1/100 inch 2.83 PDF points),
```
**Correct:**
@@ -167,7 +167,7 @@ public record AnnotationDto
/// <summary>
/// Horizontal position of the signature field on the page.
/// <br/><br/>
/// <b>DevExpress unit:</b> Hundredths of an inch (1/100 inch ? 2.83 PDF points), origin at the <b>top-left</b> corner of the page, X increases to the right.
/// <b>DevExpress unit:</b> Hundredths of an inch (1/100 inch 2.83 PDF points), origin at the <b>top-left</b> corner of the page, X increases to the right.
/// <br/>
/// <b>Difference from PSPDFKit:</b> PSPDFKit also uses top-left origin but measures in PDF points (1/72 inch).
/// To convert: <c>xDevExpress = xPsPdfKit * (100.0 / 72.0)</c>
@@ -199,7 +199,7 @@ public double? X { get; init; }
/// <summary>
/// Vertical position of the signature field on the page.
/// <br/><br/>
/// <b>DevExpress unit:</b> Hundredths of an inch (1/100 inch ? 2.83 PDF points), origin at the <b>top-left</b> corner of the page, Y increases downward.
/// <b>DevExpress unit:</b> Hundredths of an inch (1/100 inch 2.83 PDF points), origin at the <b>top-left</b> corner of the page, Y increases downward.
/// <br/>
/// <b>Difference from PSPDFKit:</b> PSPDFKit also uses top-left origin and Y increases downward, but measures in PDF points (1/72 inch).
/// To convert: <c>yDevExpress = yPsPdfKit * (100.0 / 72.0)</c>
@@ -250,11 +250,11 @@ public double? Y { get; init; }
**Table:** `TBSIG_DOCUMENT_RECEIVER_ELEMENT`
**Columns:**
- `POSITION_X` (FLOAT) — Stores INCHES
- `POSITION_Y` (FLOAT) — Stores INCHES
- `WIDTH` (FLOAT) — Stores INCHES
- `HEIGHT` (FLOAT) — Stores INCHES
- `PAGE` (INT) — 1-based page number
- `POSITION_X` (FLOAT) — Stores INCHES
- `POSITION_Y` (FLOAT) — Stores INCHES
- `WIDTH` (FLOAT) — Stores INCHES
- `HEIGHT` (FLOAT) — Stores INCHES
- `PAGE` (INT) — 1-based page number
---
@@ -263,19 +263,19 @@ public double? Y { get; init; }
```
Database (GdPicture14): Inches, top-left origin
? DevExpress (LEGACY): x_DX = x_inches * 100 (1/100 inch units)
DevExpress (LEGACY): x_DX = x_inches * 100 (1/100 inch units)
y_DX = y_inches * 100
? PDF Points (iText7): x_pt = x_inches * 72 (bottom-left origin)
PDF Points (iText7): x_pt = x_inches * 72 (bottom-left origin)
y_pt = (pageHeight_inches - y_inches - height_inches) * 72
? PDF.js Canvas: normalize to [0,1], then scale to pixels
PDF.js Canvas: normalize to [0,1], then scale to pixels
x_normalized = x_inches / pageWidth_inches (e.g., 8.27 for A4)
y_normalized = y_inches / pageHeight_inches (e.g., 11.69 for A4)
x_pixel = x_normalized * canvasWidth * scale * dpr
y_pixel = y_normalized * canvasHeight * scale * dpr
? PSPDFKit (Web): x_pt = x_inches * 72 (top-left origin)
PSPDFKit (Web): x_pt = x_inches * 72 (top-left origin)
y_pt = y_inches * 72
```
@@ -297,15 +297,15 @@ Database (GdPicture14): Inches, top-left origin
## Session 12 Changes Already Completed
1. ? Added `SignatureService` to DI (`EnvelopeGenerator.ReceiverUI/Program.cs`)
2. ? Fixed YARP routes for Blazor WASM static files (`EnvelopeGenerator.API/yarp.json`):
1. Added `SignatureService` to DI (`EnvelopeGenerator.ReceiverUI/Program.cs`)
2. Fixed YARP routes for Blazor WASM static files (`EnvelopeGenerator.API/yarp.json`):
- Added routes for `appsettings.json`, `appsettings.Development.json`
- Added route for `*.styles.css` files
- Added routes for `/fonts/`, `/images/`
- Removed `/wwwroot/` route (redundant)
- Removed `receiver-ui-annotation-fake` route (no longer needed)
3. ? `EnvelopeViewer.razor` now successfully:
3. `EnvelopeViewer.razor` now successfully:
- Loads PDF via `DocumentService`
- Loads signatures via `SignatureService`
- Displays PDF with PDF.js viewer