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 ## 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). 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:** **Code Evidence:**
```vb ```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_WIDTH As Single = 1.77 ' 1.77 inches = 4.5cm
Private Const SIGNATURE_HEIGHT As Single = 1.96 ' 1.96 inches = 5cm Private Const SIGNATURE_HEIGHT As Single = 1.96 ' 1.96 inches = 5cm
Sub LoadAnnotation(pElement As Signature, ...) 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.Top = CSng(pElement.Y)
oAnnotation.Width = CSng(pElement.Width) oAnnotation.Width = CSng(pElement.Width)
oAnnotation.Height = CSng(pElement.Height) oAnnotation.Height = CSng(pElement.Height)
@@ -47,18 +47,18 @@ End Sub
**File:** `E:\TekH\Visual Studio\EnvelopeGenerator_BlazorUIDev\COPILOT_CONTEXT_EN.md` **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:** **New Content Must Include:**
1. **Database storage format:** INCHES, top-left origin 1. **Database storage format:** INCHES, top-left origin
2. **Source evidence:** VB.NET code snippet from `frmFieldEditor.vb` 2. **Source evidence:** VB.NET code snippet from `frmFieldEditor.vb`
3. **Conversion formulas:** 3. **Conversion formulas:**
``` ```
Inches ? DevExpress (DX): multiply by 100 Inches DevExpress (DX): multiply by 100
Inches ? PDF Points: multiply by 72 Inches PDF Points: multiply by 72
Inches ? PDF.js Canvas: normalize to page size, then scale to pixels Inches PDF.js Canvas: normalize to page size, then scale to pixels
``` ```
4. **Unit comparison table:** 4. **Unit comparison table:**
@@ -66,11 +66,11 @@ End Sub
|--------|------|--------|------------------------| |--------|------|--------|------------------------|
| **GdPicture14** (Source) | **Inches** | Top-left | Database format | | **GdPicture14** (Source) | **Inches** | Top-left | Database format |
| DevExpress (LEGACY) | 1/100 inch (DX) | Top-left | `x_DX = x_inches * 100` | | 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 | | 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` | | 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):** **Current (WRONG):**
```csharp ```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:** **Correct:**
@@ -167,7 +167,7 @@ public record AnnotationDto
/// <summary> /// <summary>
/// Horizontal position of the signature field on the page. /// Horizontal position of the signature field on the page.
/// <br/><br/> /// <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/> /// <br/>
/// <b>Difference from PSPDFKit:</b> PSPDFKit also uses top-left origin but measures in PDF points (1/72 inch). /// <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> /// To convert: <c>xDevExpress = xPsPdfKit * (100.0 / 72.0)</c>
@@ -199,7 +199,7 @@ public double? X { get; init; }
/// <summary> /// <summary>
/// Vertical position of the signature field on the page. /// Vertical position of the signature field on the page.
/// <br/><br/> /// <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/> /// <br/>
/// <b>Difference from PSPDFKit:</b> PSPDFKit also uses top-left origin and Y increases downward, but measures in PDF points (1/72 inch). /// <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> /// To convert: <c>yDevExpress = yPsPdfKit * (100.0 / 72.0)</c>
@@ -250,11 +250,11 @@ public double? Y { get; init; }
**Table:** `TBSIG_DOCUMENT_RECEIVER_ELEMENT` **Table:** `TBSIG_DOCUMENT_RECEIVER_ELEMENT`
**Columns:** **Columns:**
- `POSITION_X` (FLOAT) — Stores INCHES - `POSITION_X` (FLOAT) — Stores INCHES
- `POSITION_Y` (FLOAT) — Stores INCHES - `POSITION_Y` (FLOAT) — Stores INCHES
- `WIDTH` (FLOAT) — Stores INCHES - `WIDTH` (FLOAT) — Stores INCHES
- `HEIGHT` (FLOAT) — Stores INCHES - `HEIGHT` (FLOAT) — Stores INCHES
- `PAGE` (INT) — 1-based page number - `PAGE` (INT) — 1-based page number
--- ---
@@ -263,19 +263,19 @@ public double? Y { get; init; }
``` ```
Database (GdPicture14): Inches, top-left origin 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 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 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) x_normalized = x_inches / pageWidth_inches (e.g., 8.27 for A4)
y_normalized = y_inches / pageHeight_inches (e.g., 11.69 for A4) y_normalized = y_inches / pageHeight_inches (e.g., 11.69 for A4)
x_pixel = x_normalized * canvasWidth * scale * dpr x_pixel = x_normalized * canvasWidth * scale * dpr
y_pixel = y_normalized * canvasHeight * 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 y_pt = y_inches * 72
``` ```
@@ -297,15 +297,15 @@ Database (GdPicture14): Inches, top-left origin
## Session 12 Changes Already Completed ## Session 12 Changes Already Completed
1. ? Added `SignatureService` to DI (`EnvelopeGenerator.ReceiverUI/Program.cs`) 1. Added `SignatureService` to DI (`EnvelopeGenerator.ReceiverUI/Program.cs`)
2. ? Fixed YARP routes for Blazor WASM static files (`EnvelopeGenerator.API/yarp.json`): 2. Fixed YARP routes for Blazor WASM static files (`EnvelopeGenerator.API/yarp.json`):
- Added routes for `appsettings.json`, `appsettings.Development.json` - Added routes for `appsettings.json`, `appsettings.Development.json`
- Added route for `*.styles.css` files - Added route for `*.styles.css` files
- Added routes for `/fonts/`, `/images/` - Added routes for `/fonts/`, `/images/`
- Removed `/wwwroot/` route (redundant) - Removed `/wwwroot/` route (redundant)
- Removed `receiver-ui-annotation-fake` route (no longer needed) - Removed `receiver-ui-annotation-fake` route (no longer needed)
3. ? `EnvelopeViewer.razor` now successfully: 3. `EnvelopeViewer.razor` now successfully:
- Loads PDF via `DocumentService` - Loads PDF via `DocumentService`
- Loads signatures via `SignatureService` - Loads signatures via `SignatureService`
- Displays PDF with PDF.js viewer - Displays PDF with PDF.js viewer