This file is indexed.

/usr/share/psychtoolbox-3/PsychDemos/DrawManuallyAntiAliasedTextDemo.m is in psychtoolbox-3-common 3.0.9+svn2579.dfsg1-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
100
101
function DrawManuallyAntiAliasedTextDemo(ts)
% DrawManuallyAntiAliasedTextDemo([textSize=96]) - Manually anti-alias text for special purpose applications.
%
% This demo shows how to draw somewhat anti-aliased text efficiently if you
% can't use the operating systems built-in text anti-aliasing for some
% reason.
%
% It draws the text oversized, without anti-aliasing, into an offscreen
% window. Then it draws the offscreen window into the onscreen window,
% applying alpha-blending and bilinear texture filtering, shrinking to 50%
% size. A GLSL shader based gaussian blur operator is applied during
% drawing to reduce aliasing caused high-frequency edges in the texts
% contour.
%
% This needs a modern graphics card to work and is not as efficient as the
% operating systems anti-aliasing, but still reasonably fast if done right.
%
% see also: PsychDemos

% 3/8/04    awi     Wrote it.
% 7/13/04   awi     Added comments section.  
% 9/8/04    awi     Added Try/Catch, cosmetic changes to documentation.
% 1/21/05   awi     Replaced call to GetChar with call to KbWait. 
% 10/6/05   awi	    Note here cosmetic changes by dgp between 1/21/05 and 10/6/05	.
% 08/24/09  mk      Derived from DrawSomeTextDemo.

AssertOpenGL;

% Define default textsize for oversized text:
if nargin < 1
    ts = 96;
end

try
    % Disable automatic text anti-aliasing by operating system:
    Screen('Preference', 'TextAntiAliasing', 0);

    % Choosing the display with the highest display number is
    % a best guess about where you want the stimulus displayed.
    screens=Screen('Screens');
    screenNumber=max(screens);
    
    % Open double-buffered onscreen window with gray (128) background
    % color. We also use the imaging pipeline to enable support for fast
    % offscreen windows. This would also work with a regular
    % Screen('OpenWindow',...) call, but would be slower:
    PsychImaging('PrepareConfiguration');
    PsychImaging('AddTask', 'General', 'UseFastOffscreenWindows');
    w=PsychImaging('OpenWindow', screenNumber, 128);
    
    % Need alpha-blending:
    Screen('Blendfunction', w, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    
    % Create a convolution shader for a gaussian blur of width 5 and
    % stddev. 1.5. Needs image processing toolbox for fspecial() function, or
    % alternatively compute your own 5 x 5 kernel matrix with a gaussian
    % convolution kernel inside:
    kernel = fspecial('gaussian', 5, 1.5);
    shader = EXPCreateStatic2DConvolutionShader(kernel, 4, 4, 0, 2);

    Screen('TextFont',w, 'Courier New');
    Screen('TextSize',w, ts);
    Screen('TextStyle', w, 1+2);
    
    % Compute bounding box of textstring:
    bbox = ceil(Screen('TextBounds', w, 'Hello World!'));
    
    % Create offscreen window of sufficient size, with a background color
    % that matches the wanted background color, and a alpha value of zero:
    woff = Screen('OpenOffscreenwindow', w, [128 128 128 0], bbox);
    
    % Set same text properties for woff as for w:
    Screen('TextFont',woff, 'Courier New');
    Screen('TextSize',woff, ts);
    Screen('TextStyle', woff, 1+2);
    
    % Draw text to offscreenw window:
    Screen('DrawText', woff, 'Hello World!', 0, 0, 255); %[0, 0, 255, 255]);
    
    % Draw offscreen window with text, reduced to 50% in size, with
    % bilinear texture filtering and alpha-blending enabled. Use the
    % gaussian blur shader to remove high frequencies during drawing to
    % reduce aliasing artifacts:
    Screen('DrawTexture', w, woff, [], OffsetRect(ScaleRect(bbox, 0.5, 0.5), 100, 100), [], [], [], [], shader);
    
    % Same without gaussian blur, just for comparison:
    Screen('DrawTexture', w, woff, [], OffsetRect(ScaleRect(bbox, 0.5, 0.5), 100, 220), [], [], [], [], 0);

    % Show it:
    Screen('Flip',w);

    KbStrokeWait;
    
    % Done.
    Screen('CloseAll');
catch
    % This "catch" section executes in case of an error in the "try" section
    % above.  Importantly, it closes the onscreen window if it's open.
    Screen('CloseAll');
    psychrethrow(psychlasterror);
end