Ejemplo n.º 1
0
def _processGlyph(G, truncate=1, pathReverse=0):
    O = []
    P = []
    R = []
    for g in G + (('end', ), ):
        op = g[0]
        if O and op in ['moveTo', 'moveToClosed', 'end']:
            if O[0] == 'moveToClosed':
                O = O[1:]
                if pathReverse:
                    for i in range(0, len(P), 2):
                        P[i + 1], P[i] = P[i:i + 2]
                    P.reverse()
                    O.reverse()
                O.insert(0, 'moveTo')
                O.append('closePath')
            i = 0
            if truncate: P = list(map(_pathNumTrunc, P))
            for o in O:
                j = i + _PATH_OP_ARG_COUNT[_PATH_OP_NAMES.index(o)]
                if o == 'closePath':
                    R.append(o)
                else:
                    R.append((o, ) + tuple(P[i:j]))
                i = j
            O = []
            P = []
        O.append(op)
        P.extend(g[1:])
    return R
Ejemplo n.º 2
0
def _processGlyph(G, truncate=1, pathReverse=0):
    O = []
    P = []
    R = []
    for g in G + (("end",),):
        op = g[0]
        if O and op in ["moveTo", "moveToClosed", "end"]:
            if O[0] == "moveToClosed":
                O = O[1:]
                if pathReverse:
                    for i in range(0, len(P), 2):
                        P[i + 1], P[i] = P[i : i + 2]
                    P.reverse()
                    O.reverse()
                O.insert(0, "moveTo")
                O.append("closePath")
            i = 0
            if truncate:
                P = list(map(_pathNumTrunc, P))
            for o in O:
                j = i + _PATH_OP_ARG_COUNT[_PATH_OP_NAMES.index(o)]
                if o == "closePath":
                    R.append(o)
                else:
                    R.append((o,) + tuple(P[i:j]))
                i = j
            O = []
            P = []
        O.append(op)
        P.extend(g[1:])
    return R
Ejemplo n.º 3
0
def _processGlyph(G, truncate=1, pathReverse=0):
    O = []
    P = []
    R = []
    for g in G+(('end',),):
        op = g[0]
        if O and op in ['moveTo', 'moveToClosed','end']:
            if O[0]=='moveToClosed':
                O = O[1:]
                if pathReverse:
                    for i in xrange(0,len(P),2):
                        P[i+1], P[i] = P[i:i+2]
                    P.reverse()
                    O.reverse()
                O.insert(0,'moveTo')
                O.append('closePath')
            i = 0
            if truncate: P = map(_pathNumTrunc,P)
            for o in O:
                j = i + _PATH_OP_ARG_COUNT[_PATH_OP_NAMES.index(o)]
                if o=='closePath':
                    R.append(o)
                else:
                    R.append((o,)+ tuple(P[i:j]))
                i = j
            O = []
            P = []
        O.append(op)
        P.extend(g[1:])
    return R
Ejemplo n.º 4
0
def _getSegs(L):
    n = len(L)
    i = 0
    ops = dict(m='moveTo', l='lineTo', c='curveTo', h='closePath')
    while i < n:
        for j in i, i + 2, i + 6:
            op = L[j]
            if op in ops:
                try:
                    opName = ops[op]
                    nargs = _PATH_OP_ARG_COUNT[_PATH_OP_NAMES.index(opName)]
                    yield tuple([opName] +
                                [float(L[i + k]) for k in range(nargs)])
                    i = j + 1
                    break
                except:
                    raise ValueError('Error converting PDFPath at %s' %
                                     ' '.join(L[i:i + 6]))
        else:
            raise ValueError('Error converting PDFPath at %s' %
                             ' '.join(L[i:i + 6]))