MCPcopy Create free account
hub / github.com/pymupdf/PyMuPDF / _oval_string

Method _oval_string

src/__init__.py:25102–25127  ·  view source on GitHub ↗

Return /AP string defining an oval within a 4-polygon provided as points

(p1, p2, p3, p4)

Source from the content-addressed store, hash-verified

25100
25101 @staticmethod
25102 def _oval_string(p1, p2, p3, p4):
25103 """Return /AP string defining an oval within a 4-polygon provided as points
25104 """
25105 def bezier(p, q, r):
25106 return f"{p.x:f} {p.y:f} {q.x:f} {q.y:f} {r.x:f} {r.y:f} c\n"
25107
25108 kappa = 0.55228474983 # magic number
25109 ml = p1 + (p4 - p1) * 0.5 # middle points ...
25110 mo = p1 + (p2 - p1) * 0.5 # for each ...
25111 mr = p2 + (p3 - p2) * 0.5 # polygon ...
25112 mu = p4 + (p3 - p4) * 0.5 # side
25113 ol1 = ml + (p1 - ml) * kappa # the 8 bezier
25114 ol2 = mo + (p1 - mo) * kappa # helper points
25115 or1 = mo + (p2 - mo) * kappa
25116 or2 = mr + (p2 - mr) * kappa
25117 ur1 = mr + (p3 - mr) * kappa
25118 ur2 = mu + (p3 - mu) * kappa
25119 ul1 = mu + (p4 - mu) * kappa
25120 ul2 = ml + (p4 - ml) * kappa
25121 # now draw, starting from middle point of left side
25122 ap = f"{ml.x:f} {ml.y:f} m\n"
25123 ap += bezier(ol1, ol2, mo)
25124 ap += bezier(or1, or2, mr)
25125 ap += bezier(ur1, ur2, mu)
25126 ap += bezier(ul1, ul2, ml)
25127 return ap
25128
25129 @staticmethod
25130 def _parse_da(annot):

Callers 1

_le_circleMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected