This file is indexed.

/usr/share/psychtoolbox-3/PsychRects/OffsetRect.m is in psychtoolbox-3-common 3.0.11.20131230.dfsg1-1build1.

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
function newRect = OffsetRect(oldRect,x,y)
% newRect = OffsetRect(oldRect,x,y)
%
% Offset the passed rect matrix by the horizontal (x)
% and vertical (y) shift given. You can also pass in column vectors x and y
% with e.g., n different "shifts" and the function will return n copies of
% oldRect, each shifted by one of the shift values in x and y.
%
% Alternatively you can give a single scalar x,y shift value, but apply it
% to a whole matrix of rects 'oldRect' --> Apply a common offset to a large
% number of rects simultaneously.
%
% Also see PsychRects.

% 5/16/96  dhb  Relented to Pelli's request to change calling order
%               from v,h to x,y.
%          dhb  Index using RectTop etc.
% 7/10/96  dgp  Wrote it.
% 8/5/96   dgp  Check rect size.
% 5/18/08  mk   Vectorized.
% 5/31/09  mk   Improved error handling. Add support for offsetting a
%               single rect multiple times, ie., pass x,y as vectors, then
%               create many offset versions of single input rect.

if nargin~=3
	error('Usage:  newRect = OffsetRect(oldRect,x,y)');
end

if PsychNumel(oldRect) == 4
    % Single rect case:
    if size(oldRect,2)~=4
        error('Wrong size rect argument. A single rect must be a 1-row 4 element vector!');
    end
    
    if length(x)==1 && length(y)==1
        % Single rect, offset by a single (x,y) point:
        newRect(RectTop) = oldRect(RectTop) + y;
        newRect(RectBottom) = oldRect(RectBottom) + y;
        newRect(RectLeft) = oldRect(RectLeft) + x;
        newRect(RectRight) = oldRect(RectRight) + x;
    else
        % Single rect, but multiple points:
        if ~all(size(x) == size(y)) || size(x,2)~=1
            error('Wrong format of x or y in multipoint case: x and y must be 1-column vectors of matching size!');
        else
            % x and y are one column vectors with size(x,1) rows/elements.
            % Replicate oldRect into nrpts identical copies, then add point
            % offsets:
            newRect = repmat(oldRect, size(x, 1), 1) + [x, y, x, y];
        end
    end
else
    % Multirect case: Offsets (x,y) can be vectors, or a single point:    
    if size(oldRect, 1)==4
        newRect(RectTop, :) = oldRect(RectTop, :) + y;
        newRect(RectBottom, :) = oldRect(RectBottom, :) + y;
        newRect(RectLeft, :) = oldRect(RectLeft, :) + x;
        newRect(RectRight, :) = oldRect(RectRight, :) + x;
    else
        newRect(:, RectTop) = oldRect(:, RectTop) + y;
        newRect(:, RectBottom) = oldRect(:, RectBottom) + y;
        newRect(:, RectLeft) = oldRect(:, RectLeft) + x;
        newRect(:, RectRight) = oldRect(:, RectRight) + x;
    end
end