src/lib/cache.c
changeset 10 6806a90d934f
parent 9 a31048ff76a2
child 11 eb2a1472f084
equal deleted inserted replaced
9:a31048ff76a2 10:6806a90d934f
    63 
    63 
    64     else
    64     else
    65         return PT_CACHE_FRESH;
    65         return PT_CACHE_FRESH;
    66 }
    66 }
    67 
    67 
       
    68 int pt_cache_info (struct pt_cache *cache, struct pt_image_info *info)
       
    69 {
       
    70     // ensure open
       
    71     if (pt_cache_open(cache))
       
    72         return -1;
       
    73 
       
    74     info->width = cache->header->width;
       
    75     info->height = cache->header->height;
       
    76 
       
    77     return 0;
       
    78 }
       
    79 
    68 /**
    80 /**
    69  * Abort any incomplete open operation, cleaning up
    81  * Abort any incomplete open operation, cleaning up
    70  */
    82  */
    71 static void pt_cache_abort (struct pt_cache *cache)
    83 static void pt_cache_abort (struct pt_cache *cache)
    72 {
    84 {
   286 int pt_cache_open (struct pt_cache *cache)
   298 int pt_cache_open (struct pt_cache *cache)
   287 {
   299 {
   288     struct pt_cache_header header;
   300     struct pt_cache_header header;
   289     void *base;
   301     void *base;
   290 
   302 
       
   303     // ignore if already open
       
   304     if (cache->header && cache->data)
       
   305         return 0;
       
   306 
   291     // open the .cache
   307     // open the .cache
   292     if (pt_cache_open_read_fd(cache, &cache->fd))
   308     if (pt_cache_open_read_fd(cache, &cache->fd))
   293         return -1;
   309         return -1;
   294 
   310 
   295     // read in header
   311     // read in header
   388     return 0;
   404     return 0;
   389 }
   405 }
   390 
   406 
   391 int pt_cache_tile_png (struct pt_cache *cache, png_structp png, png_infop info, const struct pt_tile_info *ti)
   407 int pt_cache_tile_png (struct pt_cache *cache, png_structp png, png_infop info, const struct pt_tile_info *ti)
   392 {
   408 {
   393     if (!cache->data) {
   409     // ensure open
   394         // not yet open
   410     if (pt_cache_open(cache))
   395         if (pt_cache_open(cache))
   411         return -1;
   396             return -1;
       
   397     }
       
   398 
   412 
   399     // set basic info
   413     // set basic info
   400     png_set_IHDR(png, info, ti->width, ti->height, cache->header->bit_depth, cache->header->color_type,
   414     png_set_IHDR(png, info, ti->width, ti->height, cache->header->bit_depth, cache->header->color_type,
   401             PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT
   415             PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT
   402     );
   416     );