/usr/share/psychtoolbox-3/PsychCal/MeasMonSpd.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 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 | function [spd,S] = MeasMonSpd(window, settings, S, syncMode, whichMeterType, bitsppClut)
% [spd,S] = MeasMonSpd(window, settings, [S], [syncMode], [whichMeterType], [bitsppClut])
%
% Measure the Spd of a series of monitor settings.
%
% This routine is specific to go with CalibrateMon,
% as it depends on the action of SetMon.
%
% If whichMeterType is passed and set to 0, then the routine
% returns random spectra. This is useful for testing when
% you don't have a meter.
%
% Other valid types:
% 1 - Use PR650 (default)
% 2 - Use CVI
%
% 10/26/93 dhb Wrote it based on ccc code.
% 11/12/93 dhb Modified to use SetColor.
% 8/11/94 dhb Sync mode.
% 8/15/94 dhb Sync mode as argument, allow S to be [] for default.
% 4/12/97 dhb New toolbox compatibility, take window and bits args.
% 8/26/97 dhb pbe Add noMeterAvail arg.
% 4/7/99 dhb Add argument for radius board. Compact default arg code.
% 8/14/00 dhb Call to CMETER('SetParams') conditional on OS9.
% 8/20/00 dhb Remove bits arg to SetColor.
% 8/21/00 dhb Remove dependence on RADIUS flag. This is now handled inside of SetColor.
% dhb Change calling conventions to remove unused args.
% 9/14/00 dhb Sync mode is not actually used. Arg still passed for backwards compat.
% 2/27/02 dhb Change noMeterAvail to whichMeterType.
% 8/19/12 mk Rewrite g_usebitspp path to use PTB imaging pipeline for higher robustness
% and to support more display devices.
% Declare Bits++ box global
global g_usebitspp;
% If the global flag for using Bits++ is empty, then it hasn't been
% initialized and default it to 0.
if isempty(g_usebitspp)
g_usebitspp = 0;
end
% Check args and make sure window is passed right.
usageStr = 'Usage: [spd,S] = MeasMonSpd(window, settings, [S], [syncMode], [whichMeterType])';
if nargin < 2 || nargin > 6 || nargout > 2
error(usageStr);
end
if size(window,1) ~= 1 || size(window,2) ~= 1
error(usageStr);
end
% Set defaults
defaultS = [380 5 81];
defaultSync = 0;
defaultWhichMeterType = 1;
% Get the current gamma table.
if g_usebitspp
theClut = bitsppClut;
else
theClut = Screen('ReadNormalizedGammaTable', window);
end
% Check args and set defaults
if nargin < 5 || isempty(whichMeterType)
whichMeterType = defaultWhichMeterType;
end
if nargin < 4 || isempty(syncMode)
% FIXME: Not used? MeasSpd() would accept it as argument.
syncMode = defaultSync;
end
if nargin < 3 || isempty(S)
S = defaultS;
end
[null, nMeas] = size(settings); %#ok<*ASGLU>
spd = zeros(S(3), nMeas);
for i = 1:nMeas
% Set the color.
% Measure spectrum
switch whichMeterType
case 0
theClut(2,:) = settings(:, i)';
if g_usebitspp
Screen('LoadNormalizedGammaTable', window, theClut, 2);
Screen('Flip', window, 0, 1);
else
Screen('LoadNormalizedGammaTable', window, theClut);
end
spd(:,i) = sum(settings(:, i)) * ones(S(3), 1);
WaitSecs(.1);
case 1
theClut(2,:) = settings(:, i)';
if g_usebitspp
Screen('LoadNormalizedGammaTable', window, theClut, 2);
Screen('Flip', window, 0, 1);
else
Screen('LoadNormalizedGammaTable',window, theClut);
end
spd(:,i) = MeasSpd(S);
case 2
error('CVI interface not yet ported to PTB-3.');
% cviCal = LoadCVICalFile;
% spd(:,i) = CVICalibratedDarkMeasurement(cviCal, S, [], [], [], window, 1, settings(:,i));
otherwise
error('Invalid meter type set');
end
end
|