This file is indexed.

/usr/include/grits/objects/grits-tile.h is in libgrits-dev 0.8.1-3.

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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
/*
 * Copyright (C) 2009-2010 Andy Spencer <andy753421@gmail.com>
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef __GRITS_TILE_H__
#define __GRITS_TILE_H__

#include <glib.h>
#include <glib-object.h>
#include "grits-object.h"

#define GRITS_TYPE_TILE            (grits_tile_get_type())
#define GRITS_TILE(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj),   GRITS_TYPE_TILE, GritsTile))
#define GRITS_IS_TILE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj),   GRITS_TYPE_TILE))
#define GRITS_TILE_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST   ((klass), GRITS_TYPE_TILE, GritsTileClass))
#define GRITS_IS_TILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE   ((klass), GRITS_TYPE_TILE))
#define GRITS_TILE_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj),   GRITS_TYPE_TILE, GritsTileClass))

typedef struct _GritsTile      GritsTile;
typedef struct _GritsTileClass GritsTileClass;

struct _GritsTile {
	GritsObject  parent_instance;

	/* Pointer to the tile data */
	gpointer data;
	gboolean load;

	/* Drawing order */
	gint zindex;

	/* North,South,East,West limits */
	GritsBounds edge;

	/* Texture mapping coordinates */
	GritsBounds coords;

	/* Pointers to parent/child nodes */
	GritsTile *parent;
	GritsTile *children[2][2];

	/* Last access time (for garbage collection) */
	time_t atime;

	/* Projection used by tile data */
	GritsProj proj;

	/* Internal data to the tile */
	guint      tex;
	GdkPixbuf *pixbuf;
	guchar    *pixels;
	gint       width;
	gint       height;
	gint       alpha;
};

struct _GritsTileClass {
	GritsObjectClass parent_class;
};

/**
 * GritsTileLoadFunc:
 * @tile:      the tile to load
 * @user_data: data paseed to the function
 *
 * Used to load the image data associated with a tile. For GritsOpenGL, this
 * function should store the OpenGL texture number in the tiles data field.
 */
typedef void (*GritsTileLoadFunc)(GritsTile *tile, gpointer user_data);

/**
 * GritsTileFreeFunc:
 * @tile:      the tile to free
 * @user_data: data paseed to the function
 *
 * Used to free the image data associated with a tile
 */
typedef void (*GritsTileFreeFunc)(GritsTile *tile, gpointer user_data);

/* Forech functions */
/**
 * grits_tile_foreach:
 * @parent: the #GritsTile to iterate over
 * @child:  a pointer to a #GritsTile to store the current subtile 
 *
 * Iterate over each imediate subtile of @parent. 
 */
#define grits_tile_foreach(parent, child) \
	for (int _x = 0; _x < G_N_ELEMENTS(parent->children); _x++) \
	for (int _y = 0; child = parent->children[_x][_y], \
		_y < G_N_ELEMENTS(parent->children[_x]); _y++)

/**
 * grits_tile_foreach_index:
 * @parent: the #GritsTile to iterate over
 * @x:      integer to store the x index of the current subtile
 * @y:      integer to store the y index of the current subtile
 *
 * Iterate over each imediate subtile of @parent. 
 */
#define grits_tile_foreach_index(parent, x, y) \
	for (x = 0; x < G_N_ELEMENTS(parent->children); x++) \
	for (y = 0; y < G_N_ELEMENTS(parent->children[x]); y++)

/* Path to string table, keep in sync with tile->children */
extern gchar *grits_tile_path_table[2][2];

GType grits_tile_get_type(void);

/* Allocate a new Tile */
GritsTile *grits_tile_new(GritsTile *parent,
	gdouble n, gdouble s, gdouble e, gdouble w);

/* Return a string representation of the tile's path */
gchar *grits_tile_get_path(GritsTile *child);

/* Update a root tile */
/* Based on eye distance */
void grits_tile_update(GritsTile *root, GritsPoint *eye,
		gdouble res, gint width, gint height,
		GritsTileLoadFunc load_func, gpointer user_data);

/* Load tile data from pixel buffer */
gboolean grits_tile_load_pixels(GritsTile *tile, guchar *pixels,
		gint width, gint height, gint channels);

/* Load tile data from a GdkPixbuf */
gboolean grits_tile_load_pixbuf(GritsTile *tile, GdkPixbuf *pixbuf);

/* Load tile data from an image file */
gboolean grits_tile_load_file(GritsTile *tile, const gchar *file);

/* Find the leaf tile containing lat-lon */
GritsTile *grits_tile_find(GritsTile *root, gdouble lat, gdouble lon);

/* Delete nodes that haven't been accessed since atime */
GritsTile *grits_tile_gc(GritsTile *root, time_t atime,
		GritsTileFreeFunc free_func, gpointer user_data);

/* Free a tile and all it's children */
void grits_tile_free(GritsTile *root,
		GritsTileFreeFunc free_func, gpointer user_data);

#endif