/usr/include/gtkimageview/gdkpixbufdrawcache.h is in libgtkimageview-dev 1.6.4+dfsg-0.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; coding: utf-8 -*- */
#ifndef __GDK_PIXBUF_DRAW_CACHE_H__
#define __GDK_PIXBUF_DRAW_CACHE_H__
#include <gdk/gdk.h>
#include "utils.h"
typedef struct _GdkPixbufDrawOpts GdkPixbufDrawOpts;
typedef struct _GdkPixbufDrawCache GdkPixbufDrawCache;
/**
* GdkPixbufDrawMethod:
*
* Enumeration constants that determine the proper way to draw the
* next time.
*
* <itemizedlist>
* <listitem>GD_PIXBUF_DRAW_METHOD_SCALE : Scale the area of the
* pixbuf to draw and put the result in cache. This is the slowest
* draw method as the whole area to be drawn must be rescaled. It is
* mostly used when no part of #GdkPixbufDrawCache:s cache is
* valid.</listitem>
* <listitem>GDK_PIXBUF_DRAW_METHOD_CONTAINS : Get the area of the
* pixbuf to draw from the cache without updating the cache
* afterwards. Only blitting is needed.</listitem>
* <listitem>GDK_PIXBUF_DRAW_METHOD_SCROLL : Partially use the cache
* and scale the region not cached. The cache is updated with the
* result.</listitem>
* </itemizedlist>
**/
typedef enum
{
GDK_PIXBUF_DRAW_METHOD_SCALE = 0,
GDK_PIXBUF_DRAW_METHOD_CONTAINS = 1,
GDK_PIXBUF_DRAW_METHOD_SCROLL = 2
} GdkPixbufDrawMethod;
/**
* GdkPixbufDrawOpts:
*
* Struct which holds options for how the pixbuf should be
* drawn. Options include such things like the source rectangle in the
* pixbuf to draw, where to draw it, which zoom to use and so on.
**/
struct _GdkPixbufDrawOpts
{
gdouble zoom;
/* Rectangle in zoom-space coordinates of the area to draw. */
GdkRectangle zoom_rect;
/* Position in widget-space coordinates where to draw. */
int widget_x;
int widget_y;
GdkInterpType interp;
GdkPixbuf *pixbuf;
/* The two colors to use to draw the checker board. */
int check_color1;
int check_color2;
};
/**
* GdkPixbufDrawCache:
*
* Cache that ensures fast redraws by storing the last draw
* operation. For example, when resizing a #GtkImageView, the view
* receives an expose event and must redraw the damaged region. Unless
* fitting is %TRUE, most of the pixels it should draw are indentical
* to the ones drawn the previous time. Redrawing them is wasteful
* because scaling and especially bilinear scaling is very
* slow. Therefore, PixbufDrawCache objectifies the drawing process
* and adds a cache with the last draw from which pixels can be
* fetched.
*
* This object is present purely to ensure optimal speed. A
* #GtkIImageTool that is asked to redraw a part of the image view
* widget could either do it by itself using gdk_pixbuf_scale() and
* gdk_draw_pixbuf().
**/
struct _GdkPixbufDrawCache
{
GdkPixbuf *last_pixbuf;
GdkPixbufDrawOpts old;
int check_size;
};
GdkPixbufDrawCache *gdk_pixbuf_draw_cache_new (void);
void gdk_pixbuf_draw_cache_free (GdkPixbufDrawCache *cache);
void gdk_pixbuf_draw_cache_invalidate (GdkPixbufDrawCache *cache);
void gdk_pixbuf_draw_cache_draw (GdkPixbufDrawCache *cache,
GdkPixbufDrawOpts *opts,
GdkDrawable *drawable);
GdkPixbufDrawMethod gdk_pixbuf_draw_cache_get_method (GdkPixbufDrawOpts *old,
GdkPixbufDrawOpts *new_);
#endif
|