author | Tero Marttila <terom@fixme.fi> |
Mon, 28 Dec 2009 23:15:18 +0200 | |
changeset 8 | 400ddf1e7aa9 |
parent 7 | 997906f5fd2d |
child 9 | a31048ff76a2 |
permissions | -rw-r--r-- |
0 | 1 |
#ifndef PNGTILE_H |
2 |
#define PNGTILE_H |
|
3 |
||
4 |
/** |
|
5 |
* @file |
|
6 |
* |
|
7 |
* Tile-based access to large PNG images. |
|
8 |
*/ |
|
6
766df7c9b90d
--force-update and store palette
Tero Marttila <terom@fixme.fi>
parents:
5
diff
changeset
|
9 |
#include <stddef.h> |
0 | 10 |
|
11 |
/** |
|
12 |
* "Global" context shared between images |
|
13 |
*/ |
|
14 |
struct pt_ctx; |
|
15 |
||
16 |
/** |
|
17 |
* Per-image state |
|
18 |
*/ |
|
19 |
struct pt_image; |
|
20 |
||
6
766df7c9b90d
--force-update and store palette
Tero Marttila <terom@fixme.fi>
parents:
5
diff
changeset
|
21 |
/** Bitmask for pt_image_open modes */ |
0 | 22 |
enum pt_image_mode { |
6
766df7c9b90d
--force-update and store palette
Tero Marttila <terom@fixme.fi>
parents:
5
diff
changeset
|
23 |
/** Update cache if needed */ |
766df7c9b90d
--force-update and store palette
Tero Marttila <terom@fixme.fi>
parents:
5
diff
changeset
|
24 |
PT_IMG_WRITE = 0x01, |
766df7c9b90d
--force-update and store palette
Tero Marttila <terom@fixme.fi>
parents:
5
diff
changeset
|
25 |
|
766df7c9b90d
--force-update and store palette
Tero Marttila <terom@fixme.fi>
parents:
5
diff
changeset
|
26 |
/** Accept stale cache */ |
766df7c9b90d
--force-update and store palette
Tero Marttila <terom@fixme.fi>
parents:
5
diff
changeset
|
27 |
PT_IMG_STALE = 0x02, |
766df7c9b90d
--force-update and store palette
Tero Marttila <terom@fixme.fi>
parents:
5
diff
changeset
|
28 |
}; |
766df7c9b90d
--force-update and store palette
Tero Marttila <terom@fixme.fi>
parents:
5
diff
changeset
|
29 |
|
8 | 30 |
/** |
31 |
* Values for pt_image_cached |
|
32 |
*/ |
|
33 |
enum pt_cache_status { |
|
34 |
/** Cache status could not be determined */ |
|
35 |
PT_CACHE_ERROR = -1, |
|
36 |
||
37 |
/** Cache is fresh */ |
|
38 |
PT_CACHE_FRESH = 0, |
|
39 |
||
40 |
/** Cache does not exist */ |
|
41 |
PT_CACHE_NONE = 1, |
|
42 |
||
43 |
/** Cache exists, but is stale */ |
|
44 |
PT_CACHE_STALE = 2, |
|
45 |
}; |
|
46 |
||
6
766df7c9b90d
--force-update and store palette
Tero Marttila <terom@fixme.fi>
parents:
5
diff
changeset
|
47 |
/** Metadata info for image */ |
766df7c9b90d
--force-update and store palette
Tero Marttila <terom@fixme.fi>
parents:
5
diff
changeset
|
48 |
struct pt_image_info { |
766df7c9b90d
--force-update and store palette
Tero Marttila <terom@fixme.fi>
parents:
5
diff
changeset
|
49 |
/** Dimensions of image */ |
7
997906f5fd2d
mmap header, implement pt_image_info (post-update)
Tero Marttila <terom@fixme.fi>
parents:
6
diff
changeset
|
50 |
size_t width, height; |
0 | 51 |
}; |
52 |
||
53 |
||
54 |
int pt_ctx_new (struct pt_ctx **ctx_ptr); |
|
55 |
||
56 |
/** |
|
57 |
* Open a new pt_image for use. |
|
58 |
* |
|
59 |
* @param img_ptr returned pt_image handle |
|
60 |
* @param ctx global state to use |
|
61 |
* @param path filesystem path to .png file |
|
62 |
* @param mode combination of PT_IMG_* flags |
|
63 |
*/ |
|
5
4b440fa03183
move stale-update logic to main
Tero Marttila <terom@fixme.fi>
parents:
0
diff
changeset
|
64 |
int pt_image_open (struct pt_image **image_ptr, struct pt_ctx *ctx, const char *png_path, int cache_mode); |
0 | 65 |
|
5
4b440fa03183
move stale-update logic to main
Tero Marttila <terom@fixme.fi>
parents:
0
diff
changeset
|
66 |
/** |
6
766df7c9b90d
--force-update and store palette
Tero Marttila <terom@fixme.fi>
parents:
5
diff
changeset
|
67 |
* Get the image's metadata |
766df7c9b90d
--force-update and store palette
Tero Marttila <terom@fixme.fi>
parents:
5
diff
changeset
|
68 |
*/ |
7
997906f5fd2d
mmap header, implement pt_image_info (post-update)
Tero Marttila <terom@fixme.fi>
parents:
6
diff
changeset
|
69 |
int pt_image_info (struct pt_image *image, const struct pt_image_info **info_ptr); |
6
766df7c9b90d
--force-update and store palette
Tero Marttila <terom@fixme.fi>
parents:
5
diff
changeset
|
70 |
|
766df7c9b90d
--force-update and store palette
Tero Marttila <terom@fixme.fi>
parents:
5
diff
changeset
|
71 |
/** |
8 | 72 |
* Check the given image's cache is stale - in other words, if the image needs to be update()'d. |
73 |
* |
|
74 |
* @return one of pt_cache_status |
|
5
4b440fa03183
move stale-update logic to main
Tero Marttila <terom@fixme.fi>
parents:
0
diff
changeset
|
75 |
*/ |
8 | 76 |
int pt_image_status (struct pt_image *image); |
0 | 77 |
|
5
4b440fa03183
move stale-update logic to main
Tero Marttila <terom@fixme.fi>
parents:
0
diff
changeset
|
78 |
/** |
4b440fa03183
move stale-update logic to main
Tero Marttila <terom@fixme.fi>
parents:
0
diff
changeset
|
79 |
* Update the given image's cache. |
4b440fa03183
move stale-update logic to main
Tero Marttila <terom@fixme.fi>
parents:
0
diff
changeset
|
80 |
*/ |
4b440fa03183
move stale-update logic to main
Tero Marttila <terom@fixme.fi>
parents:
0
diff
changeset
|
81 |
int pt_image_update (struct pt_image *image); |
0 | 82 |
|
6
766df7c9b90d
--force-update and store palette
Tero Marttila <terom@fixme.fi>
parents:
5
diff
changeset
|
83 |
/** |
766df7c9b90d
--force-update and store palette
Tero Marttila <terom@fixme.fi>
parents:
5
diff
changeset
|
84 |
* Release the given pt_image without any clean shutdown |
766df7c9b90d
--force-update and store palette
Tero Marttila <terom@fixme.fi>
parents:
5
diff
changeset
|
85 |
*/ |
766df7c9b90d
--force-update and store palette
Tero Marttila <terom@fixme.fi>
parents:
5
diff
changeset
|
86 |
void pt_image_destroy (struct pt_image *image); |
766df7c9b90d
--force-update and store palette
Tero Marttila <terom@fixme.fi>
parents:
5
diff
changeset
|
87 |
|
0 | 88 |
#endif |