src/lib/tile.h
author Tero Marttila <terom@fixme.fi>
Tue, 26 Jan 2010 21:22:43 +0200
changeset 123 81d1cad8b588
parent 56 d5e3089906da
permissions -rw-r--r--
docfix README for new Makefile
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
/**
56
d5e3089906da major refactoring of pt_cache, split off all PNG processing into pt_png
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
     5
 * @file
18
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
 * Generating PNG tiles from a cache
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
 */
56
d5e3089906da major refactoring of pt_cache, split off all PNG processing into pt_png
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
     8
d5e3089906da major refactoring of pt_cache, split off all PNG processing into pt_png
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
     9
struct pt_tile;
d5e3089906da major refactoring of pt_cache, split off all PNG processing into pt_png
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    10
18
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
#include "pngtile.h"
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
#include "cache.h"
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
/** Types of tile output */
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
enum pt_tile_output { 
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
    PT_TILE_OUT_FILE,
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
    PT_TILE_OUT_MEM,
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
/** Initial size of out.mem.base, 16k */
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
#define PT_TILE_BUF_SIZE (16 * 1024)
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    25
/** Per-tile-render state */
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
struct pt_tile {
19
ebcc49de97d0 implement pt_ctx threadpool and pt_image_tile_async
Tero Marttila <terom@fixme.fi>
parents: 18
diff changeset
    27
    /** Cache to render from */
ebcc49de97d0 implement pt_ctx threadpool and pt_image_tile_async
Tero Marttila <terom@fixme.fi>
parents: 18
diff changeset
    28
    struct pt_cache *cache;
ebcc49de97d0 implement pt_ctx threadpool and pt_image_tile_async
Tero Marttila <terom@fixme.fi>
parents: 18
diff changeset
    29
18
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
    /** Render spec */
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
    struct pt_tile_info info;
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 type */
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
    enum pt_tile_output out_type;
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
    union {
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    37
        /** Output file */
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
        FILE *file;
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
        /** Output buffer */
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
        struct pt_tile_mem {
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
            char *base;
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    43
            size_t off, len;
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
        } mem;
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    45
    } out;
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
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
/**
56
d5e3089906da major refactoring of pt_cache, split off all PNG processing into pt_png
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    49
 * Write to the tile's output buffer
d5e3089906da major refactoring of pt_cache, split off all PNG processing into pt_png
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    50
 */
d5e3089906da major refactoring of pt_cache, split off all PNG processing into pt_png
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    51
int pt_tile_mem_write (struct pt_tile_mem *buf, void *data, size_t len);
d5e3089906da major refactoring of pt_cache, split off all PNG processing into pt_png
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    52
d5e3089906da major refactoring of pt_cache, split off all PNG processing into pt_png
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    53
d5e3089906da major refactoring of pt_cache, split off all PNG processing into pt_png
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    54
/**
19
ebcc49de97d0 implement pt_ctx threadpool and pt_image_tile_async
Tero Marttila <terom@fixme.fi>
parents: 18
diff changeset
    55
 * Alloc a new pt_tile, which must be initialized using pt_tile_init_*
ebcc49de97d0 implement pt_ctx threadpool and pt_image_tile_async
Tero Marttila <terom@fixme.fi>
parents: 18
diff changeset
    56
 */
ebcc49de97d0 implement pt_ctx threadpool and pt_image_tile_async
Tero Marttila <terom@fixme.fi>
parents: 18
diff changeset
    57
int pt_tile_new (struct pt_tile **tile_ptr);
ebcc49de97d0 implement pt_ctx threadpool and pt_image_tile_async
Tero Marttila <terom@fixme.fi>
parents: 18
diff changeset
    58
ebcc49de97d0 implement pt_ctx threadpool and pt_image_tile_async
Tero Marttila <terom@fixme.fi>
parents: 18
diff changeset
    59
/**
18
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    60
 * Initialize to render with given params, writing output to given FILE*
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    61
 */
19
ebcc49de97d0 implement pt_ctx threadpool and pt_image_tile_async
Tero Marttila <terom@fixme.fi>
parents: 18
diff changeset
    62
int pt_tile_init_file (struct pt_tile *tile, struct pt_cache *cache, const struct pt_tile_info *info, FILE *out);
18
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    63
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    64
/**
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    65
 * 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
    66
 */
19
ebcc49de97d0 implement pt_ctx threadpool and pt_image_tile_async
Tero Marttila <terom@fixme.fi>
parents: 18
diff changeset
    67
int pt_tile_init_mem (struct pt_tile *tile, struct pt_cache *cache, const struct pt_tile_info *info);
18
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    68
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    69
/**
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    70
 * 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
    71
 */
19
ebcc49de97d0 implement pt_ctx threadpool and pt_image_tile_async
Tero Marttila <terom@fixme.fi>
parents: 18
diff changeset
    72
int pt_tile_render (struct pt_tile *tile);
18
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    73
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    74
/**
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    75
 * Abort any failed render process, cleaning up.
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    76
 */
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    77
void pt_tile_abort (struct pt_tile *tile);
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    78
19
ebcc49de97d0 implement pt_ctx threadpool and pt_image_tile_async
Tero Marttila <terom@fixme.fi>
parents: 18
diff changeset
    79
/**
ebcc49de97d0 implement pt_ctx threadpool and pt_image_tile_async
Tero Marttila <terom@fixme.fi>
parents: 18
diff changeset
    80
 * Destroy given pt_tile, aborting it and freeing it
ebcc49de97d0 implement pt_ctx threadpool and pt_image_tile_async
Tero Marttila <terom@fixme.fi>
parents: 18
diff changeset
    81
 */
ebcc49de97d0 implement pt_ctx threadpool and pt_image_tile_async
Tero Marttila <terom@fixme.fi>
parents: 18
diff changeset
    82
void pt_tile_destroy (struct pt_tile *tile);
ebcc49de97d0 implement pt_ctx threadpool and pt_image_tile_async
Tero Marttila <terom@fixme.fi>
parents: 18
diff changeset
    83
18
f92a24ab046e add missing lib/tile.*
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    84
#endif