Rescue Paperjet v1 implementation
This commit is contained in:
parent
7ff5c8130d
commit
db9e2ca51b
83 changed files with 6186 additions and 3894 deletions
|
|
@ -5,19 +5,18 @@ export interface PdfRect { x: number; y: number; width: number; height: number }
|
|||
export interface ScreenRect { x: number; y: number; width: number; height: number }
|
||||
|
||||
export interface ViewportParams {
|
||||
scale: number; // CSS Zoom level (1.0 = 100%)
|
||||
scale: number; // CSS zoom level (1.0 = 100%)
|
||||
rotation: number; // 0, 90, 180, 270 (clockwise)
|
||||
canonicalWidth: number; // Unrotated CropBox width in PDF points
|
||||
canonicalHeight: number;// Unrotated CropBox height in PDF points
|
||||
dpr?: number; // Device Pixel Ratio (defaults to 1)
|
||||
}
|
||||
|
||||
function getEffectiveScale(vp: ViewportParams): number {
|
||||
return vp.scale * (vp.dpr || 1);
|
||||
dpr?: number; // Backing-store density; never part of CSS geometry
|
||||
}
|
||||
|
||||
export function pdfToScreen(p: PdfPoint, vp: ViewportParams): ScreenPoint {
|
||||
const s = getEffectiveScale(vp);
|
||||
// Screen points are CSS pixels. Device-pixel-ratio only controls the PDF.js
|
||||
// backing canvas; including it here would make Fabric objects overflow the
|
||||
// CSS overlay on retina displays.
|
||||
const s = vp.scale;
|
||||
const { rotation, canonicalWidth: W, canonicalHeight: H } = vp;
|
||||
const { x, y } = p;
|
||||
|
||||
|
|
@ -33,7 +32,7 @@ export function pdfToScreen(p: PdfPoint, vp: ViewportParams): ScreenPoint {
|
|||
}
|
||||
|
||||
export function screenToPdf(p: ScreenPoint, vp: ViewportParams): PdfPoint {
|
||||
const s = getEffectiveScale(vp);
|
||||
const s = vp.scale;
|
||||
const { rotation, canonicalWidth: W, canonicalHeight: H } = vp;
|
||||
const sx = p.x / s;
|
||||
const sy = p.y / s;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue