This file is indexed.

/usr/share/pyshared/gamera/plugins/runlength.py is in python-gamera 3.3.2-2.

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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
#
#
# Copyright (C) 2001-2005 Ichiro Fujinaga, Michael Droettboom, and Karl MacMillan
#
# 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 2
# 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, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#

from gamera.plugin import *
import _runlength

# New version of functions.  Deprecated versions are below.

class most_frequent_run(PluginFunction):
    """
    Returns the length of the most frequently occurring run of pixels
    in the given color and given direction.
    """
    self_type = ImageType([ONEBIT])
    args = Args([ChoiceString("color", ["black", "white"]),
                 ChoiceString("direction", ["horizontal", "vertical"])])
    return_type = Int()
    doc_examples = [(ONEBIT, 'black', 'horizontal')]

class most_frequent_runs(PluginFunction):
    """
    Returns the lengths of the *n* most frequently occurring runs in
    the given *color* and *direction*.

    *n*
      The number of runlengths to return.  If *n* < 0, all runlengths
      will be returned.

    The return value is a list of 2-tuples.  The first element in the
    tuple is the run length, and the second element is its frequency.
    The list is sorted by descending frequency.
    """
    self_type = ImageType([ONEBIT])
    args = Args([Int("n"),
                 ChoiceString("color", ["black", "white"]),
                 ChoiceString("direction", ["horizontal", "vertical"])])
    return_type = Class()
    author = "Michael Droettboom, after an idea by Christoph Dalitz"
    def __call__(image, n = -1, color = 'black', direction = 'horizontal'):
        return _runlength.most_frequent_runs(image, n, color, direction)
    __call__ = staticmethod(__call__)
    doc_examples = [(ONEBIT, 5, 'black', 'horizontal')]

class run_histogram(PluginFunction):
    """
    Returns the histogram of runlengths in the given *color* and
    *direction*.

    *return_value*
      The return value is an integer array.  Each index in the array
      corresponds to a particular run length, and the value at that
      index is the number of times that that run length occurs in the
      image.
    """
    self_type = ImageType([ONEBIT])
    args = Args([ChoiceString("color", ["black", "white"]),
                 ChoiceString("direction", ["horizontal", "vertical"])])
    return_type = IntVector()
    doc_examples = [(ONEBIT, 'black', 'horizontal')]

class FilterRuns(PluginFunction):
    self_type = ImageType([ONEBIT])
    args = Args([Int("length"), ChoiceString("color", ["black", "white"])])
    doc_examples = [(ONEBIT, 3, 'black')]

class filter_narrow_runs(FilterRuns):
    """
    Removes horizontal runs in the given *color* narrower than a given
    *length*.
    """
    def __call__(image, length, color = 'black'):
        return _runlength.filter_narrow_runs(image, length, color)
    __call__ = staticmethod(__call__)

class filter_wide_runs(FilterRuns):
    """
    Removes horizontal runs in the given *color* wider than a given
    *length*.
    """
    def __call__(image, length, color = 'black'):
        return _runlength.filter_wide_runs(image, length, color)
    __call__ = staticmethod(__call__)

class filter_tall_runs(FilterRuns):
    """
    Removes vertical runs in the given *color* taller than a given
    *length*.
    """
    def __call__(image, length, color = 'black'):
        return _runlength.filter_tall_runs(image, length, color)
    __call__ = staticmethod(__call__)

class filter_short_runs(FilterRuns):
    """
    Removes vertical runs in the given *color* shorter than a given
    *length*.
    """
    def __call__(image, length, color = 'black'):
        return _runlength.filter_short_runs(image, length, color)
    __call__ = staticmethod(__call__)

class to_rle(PluginFunction):
    """
    Encodes a string-based run-length encoded version of the image.

    The numbers alternate between "length of black run" and "length of
    white run".  Runs go left-to-right, top-to-bottom.  Runs rollover
    the right hand edge and continue on the left edge of the next run.

    To decode an RLE string, use from_rle_.
    """
    self_type = ImageType([ONEBIT])
    return_type = String("runs")
    doc_examples = [(ONEBIT,)]

class from_rle(PluginFunction):
    """
    Decodes a string-based run-length encoded version of the image.

    The numbers alternate between "length of black run" and "length of
    white run".  Runs go left-to-right, top-to-bottom.  Runs rollover
    the right hand edge and continue on the left edge of the next run.

    To encode an RLE string, use to_rle_."""
    self_type = ImageType([ONEBIT])
    args = Args(String("runs"))

class iterate_runs(PluginFunction):
    """
    Returns nested iterators over the runs in the given *color* and
    *direction*.

    Each run is returned as a Rect object.
    
    For example, to iterate over all runs:

    .. code:: Python

      for row in image.iterate_black_horizontal_runs():
      # All the runs in each row
      for run in row:
          print run
    """
    self_type = ImageType([ONEBIT])
    args = Args([ChoiceString("color", ["black", "white"]),
                 ChoiceString("direction", ["horizontal", "vertical"])])
    return_type = Class()

###########################################################################    
# Deprecated functions.

class FrequentRun(PluginFunction):
    self_type = ImageType([ONEBIT])
    return_type = Int()
    category = "Runlength/Deprecated"
    pure_python = True

class FrequentRuns(PluginFunction):
    self_type = ImageType([ONEBIT])
    args = Args([Int("n", default=-1)])
    return_type = Class()
    author = "Michael Droettboom, after an idea by Christoph Dalitz"
    category = "Runlength/Deprecated"
    pure_python = True

class RunHistogram(PluginFunction):
    self_type = ImageType([ONEBIT])
    return_type = IntVector()
    author = "Michael Droettboom"
    category = "Runlength/Deprecated"
    pure_python = True

class FilterRunsDep(PluginFunction):
    self_type = ImageType([ONEBIT])
    args = Args(Int("size"))
    category = "Runlength/Deprecated"
    pure_python = True

class RunIterator(PluginFunction):
    self_type = ImageType([ONEBIT])
    return_type = Class("iterator")
    category = "Runlength/Deprecated"
    pure_python = True

class RunLengthModule(PluginModule):
    category = "Runlength"
    cpp_headers=["runlength.hpp"]
    functions = [most_frequent_run,
                 most_frequent_runs,
                 run_histogram,
                 filter_narrow_runs,
                 filter_wide_runs,
                 filter_short_runs,
                 filter_tall_runs,
                 iterate_runs,
                 to_rle, from_rle]

    author = "Michael Droettboom and Karl MacMillan"
    url = "http://gamera.sourceforge.net/"

module = RunLengthModule()
                 
del FrequentRun
del FrequentRuns
del RunHistogram
del FilterRuns
del RunIterator
del FilterRunsDep