src/lib/tile.h
author Tero Marttila <terom@fixme.fi>
Thu, 31 Dec 2009 14:01:37 +0200
changeset 18 f92a24ab046e
child 19 ebcc49de97d0
permissions -rw-r--r--
add missing lib/tile.*
18
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
#ifndef PNGTILE_TILE_H
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
#define PNGTILE_TILE_H
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
/**
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
 * Generating PNG tiles from a cache
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
 */
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
#include "pngtile.h"
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
#include "cache.h"
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
/** Types of tile output */
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
enum pt_tile_output { 
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
    PT_TILE_OUT_FILE,
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
    PT_TILE_OUT_MEM,
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
};
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
/** Initial size of out.mem.base, 16k */
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
#define PT_TILE_BUF_SIZE (16 * 1024)
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
/** Per-tile-render state */
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
struct pt_tile {
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
    /** Render spec */
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
    struct pt_tile_info info;
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    25
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
    /** Output type */
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
    enum pt_tile_output out_type;
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
    union {
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
        /** Output file */
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
        FILE *file;
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
        
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
        /** Output buffer */
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
        struct pt_tile_mem {
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
            char *base;
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
            size_t off, len;
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    37
        } mem;
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
    } out;
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
};
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    40
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
/**
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
 * Initialize to render with given params, writing output to given FILE*
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    43
 */
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
int pt_tile_init_file (struct pt_tile *tile, const struct pt_tile_info *info, FILE *out);
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    45
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    46
/**
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
 * Initialize to render with given params, writing output to a memory buffer
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
 */
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    49
int pt_tile_init_mem (struct pt_tile *tile, const struct pt_tile_info *info);
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    50
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    51
/**
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    52
 * Render PNG data from given cache according to parameters given to pt_tile_init_*
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    53
 */
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    54
int pt_tile_render (struct pt_tile *tile, struct pt_cache *cache);
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    55
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    56
/**
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    57
 * Abort any failed render process, cleaning up.
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    58
 */
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    59
void pt_tile_abort (struct pt_tile *tile);
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    60
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    61
#endif