eptm_dashboard/.venv/lib/python3.12/site-packages/pdfplumber/ctm.py

38 lines
816 B
Python

import math
from typing import NamedTuple
# For more details, see the PDF Reference, 6th Ed., Section 4.2.2 ("Common
# Transformations")
class CTM(NamedTuple):
a: float
b: float
c: float
d: float
e: float
f: float
@property
def scale_x(self) -> float:
return math.sqrt(pow(self.a, 2) + pow(self.b, 2))
@property
def scale_y(self) -> float:
return math.sqrt(pow(self.c, 2) + pow(self.d, 2))
@property
def skew_x(self) -> float:
return (math.atan2(self.d, self.c) * 180 / math.pi) - 90
@property
def skew_y(self) -> float:
return math.atan2(self.b, self.a) * 180 / math.pi
@property
def translation_x(self) -> float:
return self.e
@property
def translation_y(self) -> float:
return self.f