/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ /* * st-texture-cache.h: Object for loading and caching images as textures * * Copyright 2009, 2010 Red Hat, Inc. * Copyright 2010, Maxim Ermilov * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 2.1 of * the License, or (at your option) any later version. * * This program is distributed in the hope it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for * more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see . */ #ifndef __ST_TEXTURE_CACHE_H__ #define __ST_TEXTURE_CACHE_H__ #if !defined(ST_H_INSIDE) && !defined(ST_COMPILATION) #error "Only can be included directly.h" #endif #include #include #include #include #include #include #define ST_TYPE_TEXTURE_CACHE (st_texture_cache_get_type ()) G_DECLARE_FINAL_TYPE (StTextureCache, st_texture_cache, ST, TEXTURE_CACHE, GObject) typedef struct _StTextureCachePrivate StTextureCachePrivate; struct _StTextureCache { GObject parent; StTextureCachePrivate *priv; }; typedef enum { ST_TEXTURE_CACHE_POLICY_NONE, ST_TEXTURE_CACHE_POLICY_FOREVER } StTextureCachePolicy; StTextureCache* st_texture_cache_get_default (void); ClutterActor * st_texture_cache_load_sliced_image (StTextureCache *cache, GFile *file, gint grid_width, gint grid_height, gint paint_scale, gfloat resource_scale, GFunc load_callback, gpointer user_data); GIcon *st_texture_cache_bind_cairo_surface_property (StTextureCache *cache, GObject *object, const char *property_name); GIcon * st_texture_cache_load_cairo_surface_to_gicon (StTextureCache *cache, cairo_surface_t *surface); ClutterActor *st_texture_cache_load_gicon (StTextureCache *cache, StThemeNode *theme_node, GIcon *icon, gint size, gint paint_scale, gfloat resource_scale); ClutterActor *st_texture_cache_load_file_async (StTextureCache *cache, GFile *file, int available_width, int available_height, int paint_scale, gfloat resource_scale); CoglTexture *st_texture_cache_load_file_to_cogl_texture (StTextureCache *cache, GFile *file, gint paint_scale, gfloat resource_scale); cairo_surface_t *st_texture_cache_load_file_to_cairo_surface (StTextureCache *cache, GFile *file, gint paint_scale, gfloat resource_scale); /** * StTextureCacheLoader: (skip) * @cache: a #StTextureCache * @key: Unique identifier for this texture * @data: Callback user data * @error: A #GError * * See st_texture_cache_load(). Implementations should return a * texture handle for the given key, or set @error. * */ typedef CoglTexture * (*StTextureCacheLoader) (StTextureCache *cache, const char *key, void *data, GError **error); CoglTexture * st_texture_cache_load (StTextureCache *cache, const char *key, StTextureCachePolicy policy, StTextureCacheLoader load, void *data, GError **error); gboolean st_texture_cache_rescan_icon_theme (StTextureCache *cache); #endif /* __ST_TEXTURE_CACHE_H__ */