This file is indexed.

/usr/include/gegl-0.3/sc/sc-outline.h is in libgegl-dev 0.3.4-1ubuntu2.

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
/* This file is an image processing operation for GEGL
 *
 * sc-outline.h
 * Copyright (C) 2011 Barak Itkin <lightningismyname@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 __GEGL_SC_OUTLINE_H__
#define __GEGL_SC_OUTLINE_H__

#include <gegl.h>

/**
 * An enumeration for representing progress directions in 2 dimensions
 * <pre>
 *       0
 *
 *   7   N   1
 *       ^
 *       |
 * 6 W<--+-->E  2
 *       |           =====>X
 *       v           ||
 *   5   S   3       ||
 *                   vv
 *       4           Y
 * </pre>
 */
typedef enum {
  GEGL_SC_DIRECTION_N     = 0,
  GEGL_SC_DIRECTION_NE    = 1,
  GEGL_SC_DIRECTION_E     = 2,
  GEGL_SC_DIRECTION_SE    = 3,
  GEGL_SC_DIRECTION_S     = 4,
  GEGL_SC_DIRECTION_SW    = 5,
  GEGL_SC_DIRECTION_W     = 6,
  GEGL_SC_DIRECTION_NW    = 7,
  GEGL_SC_DIRECTION_COUNT = 8
} GeglScDirection;

#define GEGL_SC_DIRECTION_CW(d)       (((d) + 1) % 8)
#define GEGL_SC_DIRECTION_CCW(d)      (((d) + 7) % 8)
#define GEGL_SC_DIRECTION_OPPOSITE(d) (((d) + 4) % 8)

#define GEGL_SC_DIRECTION_IS_NORTH(d) (       \
  ((d) == GEGL_SC_DIRECTION_N)  ||            \
  ((d) == GEGL_SC_DIRECTION_NE) ||            \
  ((d) == GEGL_SC_DIRECTION_NW)               \
)

#define GEGL_SC_DIRECTION_IS_SOUTH(d) (       \
  ((d) == GEGL_SC_DIRECTION_S)  ||            \
  ((d) == GEGL_SC_DIRECTION_SE) ||            \
  ((d) == GEGL_SC_DIRECTION_SW)               \
)

#define GEGL_SC_DIRECTION_IS_EAST(d) (        \
  ((d) == GEGL_SC_DIRECTION_E)  ||            \
  ((d) == GEGL_SC_DIRECTION_NE) ||            \
  ((d) == GEGL_SC_DIRECTION_SE)               \
)

#define GEGL_SC_DIRECTION_IS_WEST(d) (        \
  ((d) == GEGL_SC_DIRECTION_W)  ||            \
  ((d) == GEGL_SC_DIRECTION_NW) ||            \
  ((d) == GEGL_SC_DIRECTION_SW)               \
)

#define GEGL_SC_DIRECTION_XOFFSET(d,s) (      \
  (GEGL_SC_DIRECTION_IS_EAST(d)) ? (s) :      \
    ((GEGL_SC_DIRECTION_IS_WEST(d)) ? -(s) :  \
      0)                                      \
)

#define GEGL_SC_DIRECTION_YOFFSET(d,s) (      \
  (GEGL_SC_DIRECTION_IS_SOUTH(d)) ? (s) :     \
    ((GEGL_SC_DIRECTION_IS_NORTH(d)) ? -(s) : \
      0)                                      \
)

/**
 * A struct for representing a point which belongs to an outline,
 * together with the direction which is the normal pointing outside
 * of the interior area defined by the outline
 */
typedef struct  {
  gint x, y;
  GeglScDirection outside_normal;
} GeglScPoint;

/* Define a type for the outline to distinguish it from all the other
 * pointer arrays in the code of the seamless cloning. Also allow later
 * to pass it transparently to other places and free it, without
 * depending on the actual representation of this type.
 */
typedef GPtrArray GeglScOutline;

GeglScOutline* gegl_sc_outline_find            (const GeglRectangle *rect,
                                                GeglBuffer          *pixels,
                                                gdouble              threshold,
                                                gboolean            *ignored_islands);

gboolean       gegl_sc_outline_check_if_single (const GeglRectangle *search_area,
                                                GeglBuffer          *buffer,
                                                gdouble              threshold,
                                                GeglScOutline       *existing);

guint          gegl_sc_outline_length          (GeglScOutline       *self);

gboolean       gegl_sc_outline_equals          (GeglScOutline       *a,
                                                GeglScOutline       *b);

void           gegl_sc_outline_free            (GeglScOutline       *self);

#endif