Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 2j)@sdZddlmZddlmZddlZddlZddZefddZ e e fd d Z d d Z d dZddZddZddZddZddZddZddZddZdd Zd!d"Zd#d$ZGd%d&d&eZd-d(d)Zd*d+Zed,krddlZddlZejej j!dS).zTRoutines for calculating bounding boxes, point in rectangle calculations and so on. )otRound)VectorNcCs@|sdSdd|D}dd|D}t|t|t|t|fS)zCalculate the bounding rectangle of a 2D points array. Args: array: A sequence of 2D tuples. Returns: A four-item tuple representing the bounding rectangle ``(xMin, yMin, xMax, yMax)``. rcSsg|] \}}|qSr).0xyrr>/tmp/pip-build-_d5lkt3n/fonttools/fontTools/misc/arrayTools.py szcalcBounds..cSsg|] \}}|qSrr)rrrrrrr s)rrrr)minmax)arrayxsZysrrr calcBounds s rcstfddt|DS)aCalculate the integer bounding rectangle of a 2D points array. Values are rounded to closest integer towards ``+Infinity`` using the :func:`fontTools.misc.fixedTools.otRound` function by default, unless an optional ``round`` function is passed. Args: array: A sequence of 2D tuples. round: A rounding function of type ``f(x: float) -> int``. Returns: A four-item tuple of integers representing the bounding rectangle: ``(xMin, yMin, xMax, yMax)``. c3s|]}|VqdS)Nr)rv)roundrr )sz calcIntBounds..)tupler)r rr)rr calcIntBoundssrc Cs8|\}}|\}}}} ||||||||||| |fS)aVAdd a point to a bounding rectangle. Args: bounds: A bounding rectangle expressed as a tuple ``(xMin, yMin, xMax, yMax)``. p: A 2D tuple representing a point. min,max: functions to compute the minimum and maximum. Returns: The updated bounding rectangle ``(xMin, yMin, xMax, yMax)``. r) Zboundspr r rrxMinyMinxMaxyMaxrrr updateBounds,s  rcCsD|\}}|\}}}}||ko&|knoB||ko>|kSS)a'Test if a point is inside a bounding rectangle. Args: p: A 2D tuple representing a point. rect: A bounding rectangle expressed as a tuple ``(xMin, yMin, xMax, yMax)``. Returns: ``True`` if the point is inside the rectangle, ``False`` otherwise. r)rrectrrrrrrrrr pointInRect<s  rcs4t|dkrgS|\fdd|DS)aDetermine which points are inside a bounding rectangle. Args: array: A sequence of 2D tuples. rect: A bounding rectangle expressed as a tuple ``(xMin, yMin, xMax, yMax)``. Returns: A list containing the points inside the rectangle. cs@g|]8\}}|kokno:|ko6knqSrr)rrr)rrrrrrr Ysz pointsInRect..)len)r rr)rrrrr pointsInRectKs  rcCs|\}}tj|d|dS)zCalculate the length of the given vector. Args: vector: A 2D tuple. Returns: The Euclidean length of the vector. )mathsqrt)Zvectorrrrrr vectorLength[s r"cCsdd|DS)zRound a list of floats to 16-bit signed integers. Args: array: List of float values. Returns: A list of rounded integers. cSsg|]}ttj|dqS)g?)intr floor)rirrrr pszasInt16..r)r rrrasInt16gs r&cCs0|\}}}}t||t||t||t||fS)aPNormalize a bounding box rectangle. This function "turns the rectangle the right way up", so that the following holds:: xMin <= xMax and yMin <= yMax Args: rect: A bounding rectangle expressed as a tuple ``(xMin, yMin, xMax, yMax)``. Returns: A normalized bounding rectangle. )r r )rrrrrrrrnormRectss r'cCs(|\}}}}||||||||fS)a:Scale a bounding box rectangle. Args: rect: A bounding rectangle expressed as a tuple ``(xMin, yMin, xMax, yMax)``. x: Factor to scale the rectangle along the X axis. Y: Factor to scale the rectangle along the Y axis. Returns: A scaled bounding rectangle. r)rrrrrrrrrr scaleRects r(cCs(|\}}}}||||||||fS)a@Offset a bounding box rectangle. Args: rect: A bounding rectangle expressed as a tuple ``(xMin, yMin, xMax, yMax)``. dx: Amount to offset the rectangle along the X axis. dY: Amount to offset the rectangle along the Y axis. Returns: An offset bounding rectangle. r)rdxdyrrrrrrr offsetRects r+cCs(|\}}}}||||||||fS)aIInset a bounding box rectangle on all sides. Args: rect: A bounding rectangle expressed as a tuple ``(xMin, yMin, xMax, yMax)``. dx: Amount to inset the rectangle along the X axis. dY: Amount to inset the rectangle along the Y axis. Returns: An inset bounding rectangle. r)rr)r*rrrrrrr insetRects r,cCsh|\}}}}|\}}}} t||t||t||t|| f\} } } } | | ksT| | krXdSd| | | | ffS)aTest for rectangle-rectangle intersection. Args: rect1: First bounding rectangle, expressed as tuples ``(xMin, yMin, xMax, yMax)``. rect2: Second bounding rectangle. Returns: A boolean and a rectangle. If the input rectangles intersect, returns ``True`` and the intersecting rectangle. Returns ``False`` and ``(0, 0, 0, 0)`` if the input rectangles don't intersect. FrTrrrr)Fr-)r r )rect1rect2xMin1yMin1xMax1yMax1xMin2yMin2xMax2yMax2rrrrrrrsectRects  r8cCsP|\}}}}|\}}}} t||t||t||t|| f\} } } } | | | | fS)a0Determine union of bounding rectangles. Args: rect1: First bounding rectangle, expressed as tuples ``(xMin, yMin, xMax, yMax)``. rect2: Second bounding rectangle. Returns: The smallest rectangle in which both input rectangles are fully enclosed. )r r )r.r/r0r1r2r3r4r5r6r7rrrrrrr unionRects  r9cCs$|\}}}}||d||dfS)zDetermine rectangle center. Args: rect: Bounding rectangle, expressed as tuples ``(xMin, yMin, xMax, yMax)``. Returns: A 2D tuple representing the point at the center of the rectangle. rr)rrrrrrrr rectCenters r:cCs|\}}}}||||S)zDetermine rectangle area. Args: rect: Bounding rectangle, expressed as tuples ``(xMin, yMin, xMax, yMax)``. Returns: The area of the rectangle. r)rrrrrrrrrectAreas r;cCsP|\}}}}ttj|}ttj|}ttj|}ttj|}||||fS)aRound a rectangle to integer values. Guarantees that the resulting rectangle is NOT smaller than the original. Args: rect: Bounding rectangle, expressed as tuples ``(xMin, yMin, xMax, yMax)``. Returns: A rounded bounding rectangle. )r#r r$ceil)rrrrrrrrintRects r=c@seZdZddZdS)rcOstjdtdS)NzffontTools.misc.arrayTools.Vector has been deprecated, please use fontTools.misc.vector.Vector instead.)warningswarnDeprecationWarning)selfargskwargsrrr__init__ szVector.__init__N)__name__ __module__ __qualname__rDrrrrrsrFccsV|sdS|rt|}nt|}t|d}|}x|D]}||fV|}q2W||fVdS)aIterate over current and next items in iterable. Args: iterable: An iterable reverse: If true, iterate in reverse order. Returns: A iterable yielding two elements per iteration. Example: >>> tuple(pairwise([])) () >>> tuple(pairwise([], reverse=True)) () >>> tuple(pairwise([0])) ((0, 0),) >>> tuple(pairwise([0], reverse=True)) ((0, 0),) >>> tuple(pairwise([0, 1])) ((0, 1), (1, 0)) >>> tuple(pairwise([0, 1], reverse=True)) ((1, 0), (0, 1)) >>> tuple(pairwise([0, 1, 2])) ((0, 1), (1, 2), (2, 0)) >>> tuple(pairwise([0, 1, 2], reverse=True)) ((2, 1), (1, 0), (0, 2)) >>> tuple(pairwise(['a', 'b', 'c', 'd'])) (('a', 'b'), ('b', 'c'), ('c', 'd'), ('d', 'a')) >>> tuple(pairwise(['a', 'b', 'c', 'd'], reverse=True)) (('d', 'c'), ('c', 'b'), ('b', 'a'), ('a', 'd')) N)reversediternext)iterablereverseitfirstabrrrpairwises!    rQcCsdS)a >>> import math >>> calcBounds([]) (0, 0, 0, 0) >>> calcBounds([(0, 40), (0, 100), (50, 50), (80, 10)]) (0, 10, 80, 100) >>> updateBounds((0, 0, 0, 0), (100, 100)) (0, 0, 100, 100) >>> pointInRect((50, 50), (0, 0, 100, 100)) True >>> pointInRect((0, 0), (0, 0, 100, 100)) True >>> pointInRect((100, 100), (0, 0, 100, 100)) True >>> not pointInRect((101, 100), (0, 0, 100, 100)) True >>> list(pointsInRect([(50, 50), (0, 0), (100, 100), (101, 100)], (0, 0, 100, 100))) [True, True, True, False] >>> vectorLength((3, 4)) 5.0 >>> vectorLength((1, 1)) == math.sqrt(2) True >>> list(asInt16([0, 0.1, 0.5, 0.9])) [0, 0, 1, 1] >>> normRect((0, 10, 100, 200)) (0, 10, 100, 200) >>> normRect((100, 200, 0, 10)) (0, 10, 100, 200) >>> scaleRect((10, 20, 50, 150), 1.5, 2) (15.0, 40, 75.0, 300) >>> offsetRect((10, 20, 30, 40), 5, 6) (15, 26, 35, 46) >>> insetRect((10, 20, 50, 60), 5, 10) (15, 30, 45, 50) >>> insetRect((10, 20, 50, 60), -5, -10) (5, 10, 55, 70) >>> intersects, rect = sectRect((0, 10, 20, 30), (0, 40, 20, 50)) >>> not intersects True >>> intersects, rect = sectRect((0, 10, 20, 30), (5, 20, 35, 50)) >>> intersects 1 >>> rect (5, 20, 20, 30) >>> unionRect((0, 10, 20, 30), (0, 40, 20, 50)) (0, 10, 20, 50) >>> rectCenter((0, 0, 100, 200)) (50.0, 100.0) >>> rectCenter((0, 0, 100, 199.0)) (50.0, 99.5) >>> intRect((0.9, 2.9, 3.1, 4.1)) (0, 2, 4, 5) Nrrrrr_testAsrR__main__)F)"__doc__ZfontTools.misc.roundToolsrZfontTools.misc.vectorrZ_Vectorr r>rrr r rrrr"r&r'r(r+r,r8r9r:r;r=rQrRrEsysdoctestexittestmodfailedrrrrs6        /7