Beispiel #1
0
def readLWFN(path, onlyHeader=0):
    """reads an LWFN font file, returns raw data"""
    resRef = Res.FSOpenResFile(path, 1)  # read-only
    try:
        Res.UseResFile(resRef)
        n = Res.Count1Resources('POST')
        data = []
        for i in range(501, 501 + n):
            res = Res.Get1Resource('POST', i)
            code = ord(res.data[0])
            if ord(res.data[1]) <> 0:
                raise T1Error, 'corrupt LWFN file'
            if code in [1, 2]:
                if onlyHeader and code == 2:
                    break
                data.append(res.data[2:])
            elif code in [3, 5]:
                break
            elif code == 4:
                f = open(path, "rb")
                data.append(f.read())
                f.close()
            elif code == 0:
                pass  # comment, ignore
            else:
                raise T1Error, 'bad chunk code: ' + ` code `
    finally:
        Res.CloseResFile(resRef)
    data = string.join(data, '')
    assertType1(data)
    return data
Beispiel #2
0
def getSFNTResIndices(path):
    """Determine whether a file has a resource fork or not."""
    try:
        resref = MyOpenResFile(path)
    except Res.Error:
        return []
    Res.UseResFile(resref)
    numSFNTs = Res.Count1Resources('sfnt')
    Res.CloseResFile(resref)
    return list(range(1, numSFNTs + 1))
Beispiel #3
0
def list1resources():
    ntypes = Res.Count1Types()
    for itype in range(1, 1+ntypes):
        type = Res.Get1IndType(itype)
        print "Type:", repr(type)
        nresources = Res.Count1Resources(type)
        for i in range(1, 1 + nresources):
            Res.SetResLoad(0)
            res = Res.Get1IndResource(type, i)
            Res.SetResLoad(1)
            info(res)
Beispiel #4
0
def copyres(input, output, skiptypes, skipowner, progress=None):
    ctor = None
    alltypes = []
    Res.UseResFile(input)
    ntypes = Res.Count1Types()
    progress_type_inc = 50 / ntypes
    for itype in range(1, 1 + ntypes):
        type = Res.Get1IndType(itype)
        if type in skiptypes:
            continue
        alltypes.append(type)
        nresources = Res.Count1Resources(type)
        progress_cur_inc = progress_type_inc / nresources
        for ires in range(1, 1 + nresources):
            res = Res.Get1IndResource(type, ires)
            id, type, name = res.GetResInfo()
            lcname = string.lower(name)
            if lcname == OWNERNAME and id == 0:
                if skipowner:
                    continue
                else:
                    ctor = type
            size = res.size
            attrs = res.GetResAttrs()
            if progress:
                progress.label('Copy %s %d %s' % (type, id, name))
                progress.inc(progress_cur_inc)
            res.LoadResource()
            res.DetachResource()
            Res.UseResFile(output)
            try:
                res2 = Res.Get1Resource(type, id)
            except MacOS.Error:
                res2 = None

            if res2:
                if progress:
                    progress.label('Overwrite %s %d %s' % (type, id, name))
                    progress.inc(0)
                res2.RemoveResource()
            res.AddResource(type, id, name)
            res.WriteResource()
            attrs = attrs | res.GetResAttrs()
            res.SetResAttrs(attrs)
            Res.UseResFile(input)

    return (alltypes, ctor)
Beispiel #5
0
 def getFONDs(self):
     FONDcount = Res.Count1Resources('FOND')
     for i in range(FONDcount):
         fond = FontFamily(Res.Get1IndResource('FOND', i + 1), self.mode)
         self.fonds.append(fond)
Beispiel #6
0
# List all resources
Beispiel #7
0
"""tools for BuildApplet and BuildApplication"""
Beispiel #8
0
"""Creation of PYC resources"""