Ejemplo n.º 1
0
static int addfile(scm **V, int C, const char *name)
{
    static int n = 0;
    static int c = 0;

    scm *s;

    if ((s = scm_ifile(name)))
    {
        if ((n == 0            && c == 0) ||
            (n == scm_get_n(s) && c == scm_get_c(s)))
        {
            n = scm_get_n(s);
            c = scm_get_c(s);

            if ((scm_scan_catalog(s)))
            {
                V[C] = s;
                return ++C;
            }
        }
        else apperr("SCM TIFF '%s' has size %d chan %d."
                            " Expected size %d chan %d.",
                    name, scm_get_n(s), scm_get_c(s), n, c);

        scm_close(s);
    }
    return C;
}
Ejemplo n.º 2
0
Archivo: query.c Proyecto: rlk/scmtiff
int query(int argc, char **argv)
{
    long long total = 0;

    // Iterate over all input file arguments.

    for (int argi = 0; argi < argc; argi++)
    {
        long long size   = 0;
        long long length = 0;
        long long leaves = 0;
        scm *s;

        if ((s = scm_ifile(argv[argi])))
        {
            if (scm_read_catalog(s))
            {
                length = scm_get_length(s);

                for (long long i = 0; i < length; i++)
                {
                    if (isleaf(s, i))
                    {
                        leaves += 1;
                        size += (long long) s->n
                              * (long long) s->n
                              * (long long) s->c
                              * (long long) s->b / 8;
                    }
                }
            }
            scm_close(s);
            printf("%s pixels: %d channels: %d bits: %d pages: %lld leaves: %lld bytes: %lld\n", argv[argi], s->n, s->c, s->b, length, leaves, size);
        }

        total += size;
    }
    printf("total bytes: %lld\n", total);

    return 0;
}