[Master Index]
[Index for Toolbox]
bst_color_scheme
(Toolbox/bst_color_scheme.m in BrainStorm 2.0 (Alpha))
Function Synopsis
Colors = bst_color_scheme(h);
Help Text
BST_COLOR_SCHEME - apply the BrainStorm color, font, size scheme to the figure
function Colors = bst_color_scheme(h);
h is the figure handle.
Set uniform coloring for different uicontrols, set all fontnames to system default.
Return Colors structure if requested.
In the switchyard, after the figure is opened, run this command on the figure.
All uicontrols have their units set to normalized, their fontname set to 'default',
and their fontunits set to 'normalized'.
The BrainStorm startup file defines 'default' as 'arial' on PCs or 'Helvetica' on unix.
If custom colors or fonts are desired, set them after this command.
The following first letters of the tags cause special action,
or optionally, if the userdata for the object is the same first letter,
then 'Style' is set to the single letter.
FRAME, CHECKBOX or TEXT (i.e. STATICTEXT) has a tag that starts with a
Capital T, then the frame or text is treated as a "Title"
object, which we use to label our main GUIs.
Capital B, then frame is "banner text" and gets Bright Blue
FRAME, TEXT, or EDIT (i.e. editable text) uicontrol starts with a
Capital S, then the uicontrol is treated as "special" and
no colors are applied.
PUSHBUTTON starts with an
Capital H, then it's a "hot" button that gets colored orange.
Capital Q, then it's a "quit" button that gets pink
EXAMPLE
a frame with tag h has userdata set to 'BillyBob', then that frame will be
treated as Banner Text
Cross-Reference Information
This function is called by
Listing of function C:\BrainStorm_2001\Toolbox\bst_color_scheme.m
function Colors = bst_color_scheme(h);
%BST_COLOR_SCHEME - apply the BrainStorm color, font, size scheme to the figure
% function Colors = bst_color_scheme(h);
% h is the figure handle.
% Set uniform coloring for different uicontrols, set all fontnames to system default.
% Return Colors structure if requested.
%
% In the switchyard, after the figure is opened, run this command on the figure.
% All uicontrols have their units set to normalized, their fontname set to 'default',
% and their fontunits set to 'normalized'.
% The BrainStorm startup file defines 'default' as 'arial' on PCs or 'Helvetica' on unix.
%
% If custom colors or fonts are desired, set them after this command.
% The following first letters of the tags cause special action,
% or optionally, if the userdata for the object is the same first letter,
% then 'Style' is set to the single letter.
% FRAME, CHECKBOX or TEXT (i.e. STATICTEXT) has a tag that starts with a
% Capital T, then the frame or text is treated as a "Title"
% object, which we use to label our main GUIs.
% Capital B, then frame is "banner text" and gets Bright Blue
% FRAME, TEXT, or EDIT (i.e. editable text) uicontrol starts with a
% Capital S, then the uicontrol is treated as "special" and
% no colors are applied.
% PUSHBUTTON starts with an
% Capital H, then it's a "hot" button that gets colored orange.
% Capital Q, then it's a "quit" button that gets pink
%
% EXAMPLE
% a frame with tag h has userdata set to 'BillyBob', then that frame will be
% treated as Banner Text
%<autobegin> ---------------------- 21-Jun-2004 16:44:35 -----------------------
% --------- Automatically Generated Comments Block Using AUTO_COMMENTS ---------
%
% CATEGORY: GUI and Related
%
% At Check-in: $Author: Mosher $ $Revision: 21 $ $Date: 6/21/04 3:11p $
%
% This software is part of BrainStorm Toolbox Version 2.0 (Alpha) 21-Jun-2004
%
% Principal Investigators and Developers:
% ** Richard M. Leahy, PhD, Signal & Image Processing Institute,
% University of Southern California, Los Angeles, CA
% ** John C. Mosher, PhD, Biophysics Group,
% Los Alamos National Laboratory, Los Alamos, NM
% ** Sylvain Baillet, PhD, Cognitive Neuroscience & Brain Imaging Laboratory,
% CNRS, Hopital de la Salpetriere, Paris, France
%
% See BrainStorm website at http://neuroimage.usc.edu for further information.
%
% Copyright (c) 2004 BrainStorm by the University of Southern California
% This software distributed under the terms of the GNU General Public License
% as published by the Free Software Foundation. Further details on the GPL
% license can be found at http://www.gnu.org/copyleft/gpl.html .
%
% FOR RESEARCH PURPOSES ONLY. THE SOFTWARE IS PROVIDED "AS IS," AND THE
% UNIVERSITY OF SOUTHERN CALIFORNIA AND ITS COLLABORATORS DO NOT MAKE ANY
% WARRANTY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF
% MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, NOR DO THEY ASSUME ANY
% LIABILITY OR RESPONSIBILITY FOR THE USE OF THIS SOFTWARE.
%<autoend> ------------------------ 21-Jun-2004 16:44:35 -----------------------
% /---Script Authors--------------------------------------\
% | *** John C. Mosher, Ph.D. |
% | Biophysics Group |
% | |
% | *** Sylvain Baillet, Ph.D. |
% | Cognitive Neuroscience & Brain Imaging Laboratory |
% | CNRS UPR640 - LENA |
% | Hopital de la Salpetriere, Paris, France |
% | sylvain.baillet@chups.jussieu.fr |
% \------------------------------------------------------/
%
% Script History -------------------------------------------------------------------------------------
% JCM Feb, March 2002 original design
% SB 08-Apr-2002 - Force fixedwidth fonts for listbox so that text tables are properly displayed
% SB 16-Apr-2002 - Added brightblue and pink color styles + Quit and Banner styles
% JCM 20-Apr-2002 - Added an "or" function to the userdata of each button, keeps us from
% ............... having to rename all references to the tag. See help above
% SB 24-May-2002 - Added the light frame style
% ............... Modified the Title style
% SB 28-May-2002 - Added DarkText Style and new color schemes
% JCM 28-May-2002 - Rearranged switch to show new scheme as "May" (i.e. May 2002).
% JCM 29-May-2002 - Added some figure options. If you want to reverse one, just do it
% custom after the bst_color_scheme call. Moved the figure options to be
% above the main loop.
% JCM 25-Jun-2002 - Added Colors structure output, to allow GUIs to be custom recolored
% if needed, particularly the Togglebuttons. If no input handle given,
% simply returns.
% SB 27-Jun-2002 - Added CHECKBOX as a candidate to Title color scheme
% JCM 17-Jun-2004 - Ensure that "HandleVisibility" is "On"
% ----------------------------------------------------------------------------------------------------
% set the default colors here for use below
dark = [.4 .4 .4]; % the dark color for button backgrounds
light = [.83 .8 .73]; % the light color as contrast, default matlab on PC
white = [1 1 1];
textdark = [.2 .2 .2]; % dark text
textlight = [.9 .9 .9]; % light text
titledark = [.2 .2 .2]; % our titles are slightly more greyer
blue = [.513 .6 .694]; % default BrainStorm background color, bluish
darkblue = [.05 .45 .8]; % dark blue used in BrainStorm frames
orange = [1 .66 .43]; % default background style 2, orangish, also used for "hot" buttons
green = [.66 .9 .43]; % bright green for active toggled buttons
gray = [.7 .75 .75]; % for title frames, such as "Data Viewer"
pink = [1 .5 1]; % for 'Quit' buttons foreground
brightblue = [.05 .45 .8]; % For 'Banner' static text background
yellow = [1 .8 0];
% Sylvain's testing for color scheme----------------------------------------------
defaultback = [.4 .6 .6];
%brightblue = [.25 .5 .8]; % For 'Banner' static text background
brightblue = defaultback; % For 'Banner' static text background
lightblue = [.98 .98 1];%[.88 .94 .94]; % For listboxes and popups
%orange2 = [.9 .67 .42]; % For TitleText and Frames
orange2 = [.2 .4 .55]; % For TitleText and Frames
orange = [1 .6 .2]; % default background style 2, orangish, also used for "hot" buttons
%green2 = [.66 .9 .43]; % For hot buttons
gray = [.75 .8 .8]; % for Light frames
%---------------------------------------------------------------------------------
% JCM 22-May-2002, don't like pink on brightblue for quit button. Our best bet is to go to
% powerpoint and imitate some of their color schemes, since these work well for
% color on color schemes
% Powerpoint names:
[Scheme(1:2)] = deal(struct('Background',[],'TextandLines',[],...
'Shadows',[],'TitleText',[],'Fills',[],'Accent',[],...
'AccentandHyperLink',[],'AccentandFollowed',[]));
% Powerpoint Standard Color Schemes
% A dark Brown background one
Scheme(1).Background = [82 62 38]/255;
Scheme(1).TextandLines = [255 255 255]/255;
Scheme(1).Shadows = [45 32 21]/255;
Scheme(1).TitleText = [223 192 141]/255;
Scheme(1).Fills = [140 123 112]/255;
Scheme(1).Accent = [143 95 47]/255;
Scheme(1).AccentandHyperLink = [204 180 0]/255;
Scheme(1).AccentandFollowed = [140 158 160]/255;
% a greenish background one
Scheme(2).Background = [245 240 189]/255;
Scheme(2).TextandLines = [0 0 0]/255;
Scheme(2).Shadows = [255 255 204]/255;
Scheme(2).TitleText = [189 157 105]/255;
Scheme(2).Fills = [205 187 119]/255;
Scheme(2).Accent = [248 235 208]/255;
Scheme(2).AccentandHyperLink = [255 153 0]/255;
Scheme(2).AccentandFollowed = [198 75 0]/255;
% But as of 22-May, while these colors work, they don't work
% universally well. So keep the April scheme for now
% Make any color changes in this switch case, using these
% Scheme names, and avoid customizing below here.
switch 'May'
case 'April'
% scheme in April 2002 imitated mostly from Baillet's initial color designs
FigureBack = blue; % overall background color
TitleBack = gray; % color of the special title frames
ButtonBack = dark; % background color of the buttons
ToggleOff = ButtonBack; % when off
ToggleOn = green; % when on
TextBack = light; % background color of items containing text
HotBack = orange;
% QuitBack = darkblue;
QuitBack = dark*.75; % slightly darker
BannerBack = brightblue;
FigureText = textlight; % text laying on the figure
TitleText = titledark; % special title frames
ButtonText = textlight;
Text = textdark; % text on listboxes, popups
HotText = textdark;
% QuitText = pink;
QuitText = yellow;
BannerText = white;
case 'May'
% Baillet's new May 2002 scheme
FigureBack = defaultback; % overall background color
TitleBack = orange2;
ButtonBack = dark; % background color of the buttons
ToggleOff = ButtonBack; % when off
ToggleOn = green; % when on
TextBack = lightblue; % background color of items containing text
HotBack = orange;
QuitBack = dark*.75; % slightly darker
BannerBack = brightblue;
FigureText = textlight; % text laying on the figure
TitleText = textlight; % special title frames
ButtonText = textlight;
Text = textdark; % text on listboxes, popups
HotText = textdark;
QuitText = yellow;
BannerText = white;
case 'scheme'
i = 2; % pick a number from above
FigureBack = Scheme(i).Background; % lighter color
TitleBack = Scheme(i).Fills; % even lighter color relative to figure
ButtonBack = Scheme(i).Accent; % darker color
ToggleOff = ButtonBack; % when off
ToggleOn = green; % when on
TextBack = Scheme(i).TitleText; % lighter color
HotBack = Scheme(i).AccentandHyperLink; % lighter color
QuitBack = Scheme(i).AccentandFollowed; % darker color
BannerBack = Scheme(i).Shadows; % lighter color
FigureText = Scheme(i).TitleText; % very light color
TitleText = Scheme(i).TitleText; % darker color
ButtonText = Scheme(i).TextandLines; % lighter color
Text = Scheme(i).Shadows; % darker color
HotText = Scheme(i).Background; % darker color
QuitText = Scheme(i).TitleText; % lighter color
BannerText = Scheme(i).TextandLines; % very light color
end
if(nargout),
% user wants colors
Colors = struct('FigureBack',FigureBack,'TitleBack',TitleBack,...
'ButtonBack',ButtonBack,'ToggleOff',ToggleOff,'ToggleOn',ToggleOn,...
'TextBack',TextBack,'HotBack',HotBack,...
'QuitBack',QuitBack,'BannerBack',BannerBack,'FigureText',FigureText,...
'TitleText',TitleText,'ButtonText',ButtonText,'Text',Text,...
'HotText',HotText,'QuitText',QuitText,'BannerText',BannerText);
end
if(~nargin),
% user did not provide a figure handle, probably only wanted the current
% colors
return
end
% set(0,'showhiddenhandles','off'); % don't show all handles
% first, let's setup the figure with some desirable properties
set(h,'resize','on'); % allow figure to be resized
set(h,'color',FigureBack); % default background color
set(h,'units','normalized'); % keeps all objects relative to each other
% some additional good stuff 29-May-2002 JCM
set(h,'numbertitle','off', ... % don't want no number
'menubar','none', ... % no menubar. If you need one, set it manually on
'toolbar','none', ... % no toolbar. If you need one
'doublebuffer','off', ... % cut's down on memory requirements
'backingstore','off', ...% ditto, may need to manually refresh screen
'HandleVisibility','On'...% so that user can find it as the GCF
);
% 'integerhandle','off' is good, too, but needs to be set in GUIDE.
% helps keep user from accidently accessing, but if set here changes the handle number
% now with the menu and toolbars turned off, and the integerhandle off, let's scan the figure
handles = guihandles(h); % all handles should be visible to callbacks
if isempty(handles)
return
end
names = fieldnames(handles); % all of the fieldnames
% now lets load up the handles directly
hi = zeros(length(names),1);
for i = 1:length(names),
temp = getfield(handles,names{i}); % this handle
if(length(temp) > 1),
disp(sprintf('Figure has two handles with same tag!: %s',names{i}));
temp = temp(1); % alter only the first one
end
hi(i) = temp;
end
% now all handles are loaded
for i = 1:length(hi),
htype = get(hi(i),'type'); % what kind of object
switch htype
case 'figure'
% do nothing more, all done above
case 'axes'
set(hi(i),'color',TextBack); % background color
set(hi(i),'units','normalized'); % scalable
case 'uimenu'
set(hi(i),'foregroundcolor',Text); % words on the menu
case 'uicontextmenu'
% do nothing, their children are uimenu items
case 'uicontrol'
% force the fontnames to default for cross platform consistency
% Note that ORDERING OF UNITS CHANGES IS IMPORTANT
set(hi(i),'units','normalized');
set(hi(i),'fontunits','normalized');
hstyle = get(hi(i),'style'); % what style of uicontrol
switch hstyle
case 'edit'
TAG = get(hi(i),'Tag');
Special = TAG(1); % set to the first letter
% alternative to the tag is the UserData set to appropriate letter
UserData = get(hi(i),'UserData');
if ~isempty(UserData)
Special = char(UserData(1));
end
switch Special
case 'S'
% special, don't touch
otherwise
set(hi(i),'backgroundcolor',TextBack,'foregroundcolor',Text);
end
set(hi(i),'fontname','default');
case {'frame','checkbox','text'}
set(hi(i),'fontname','default');
% Allow for the case of important Title Text
TAG = get(hi(i),'Tag'); % the tag name for this text field
Special = TAG(1); % set to the first letter
% alternative to the tag is the UserData set to appropriate letter
UserData = get(hi(i),'UserData');
if ~isempty(UserData)
Special = char(UserData(1));
end
switch Special % switch on the first letter
%case 'S' SB 16-Apr-2002 : Could be confounded with the 'StaticText' default tag.
% special, do nothing
case 'T' % a title tag
set(hi(i),'backgroundcolor',TitleBack,'foregroundcolor',TitleText,'HorizontalAlignment','left');
case 'B' % a banner of static text
set(hi(i),'backgroundcolor',BannerBack,'foregroundcolor',BannerText,'FontWeight','Bold');
case 'L' % Light frame style
set(hi(i),'backgroundcolor',gray,'foregroundcolor',gray);
case 'D' % Dark textstyle - Good for text on Light-style frames
set(hi(i),'backgroundcolor',gray,'foregroundcolor',textdark);
case 'S'
% do nothing, special
otherwise
% ordinary text
set(hi(i),'backgroundcolor',FigureBack,'foregroundcolor',FigureText);
end
case 'listbox'
set(hi(i),'backgroundcolor',TextBack,'foregroundcolor',Text);
% SB - 08-Apr-2002 - Force fixedwidth fonts for listbox so that
% text tables are properly displayed
set(hi(i),'fontname','FixedWidth');
case 'pushbutton'
set(hi(i),'fontname','default');
% Allow for "hot buttons"
TAG = get(hi(i),'Tag'); % the tag name for this text field
Special = TAG(1); % set to the first letter
% alternative to the tag is the UserData set to appropriate letter
UserData = get(hi(i),'UserData');
if ~isempty(UserData)
Special = char(UserData(1));
end
switch Special % switch on the first letter
case 'H' % a hot button
set(hi(i),'backgroundcolor',HotBack,'foregroundcolor',HotText,...
'fontweight','bold');
case 'Q' % a quit button
set(hi(i),'backgroundcolor',QuitBack,'foregroundcolor',QuitText,...
'fontweight','bold');
otherwise
% ordinary button
set(hi(i),'backgroundcolor',ButtonBack,'foregroundcolor',ButtonText);
end
case 'popupmenu'
set(hi(i),'fontname','default');
set(hi(i),'backgroundcolor',TextBack,'foregroundcolor',Text);
case 'radiobutton'
set(hi(i),'fontname','default');
set(hi(i),'backgroundcolor',FigureBack,'foregroundcolor',FigureText);
case 'slider'
set(hi(i),'fontname','default');
set(hi(i),'backgroundcolor',TextBack,'foregroundcolor',Text);
case 'togglebutton'
set(hi(i),'fontname','default');
% For toggle buttons, set the background different when it's
% toggled down
val = get(hi(i),'value'); % is the button up or down
switch val
case 0 % up, off
set(hi(i),'backgroundcolor',ToggleOff,'foregroundcolor',ButtonText);
case 1 % down, on
set(hi(i),'backgroundcolor',ToggleOn,'foregroundcolor',dark);
end
case 'uitoolbar'
% do nothing, uitoolbars are a new undocumented feature
otherwise
disp(['BST_COLOR_SCHEME: unknown UICONTROL STYLE to color: ' hstyle])
end % switch hstyle for the uicontrol style
case 'text'
% do nothing
otherwise
disp(['BST_COLOR_SCHEME: unknown OBJECT TYPE to color: ',htype])
end % switch htype for the type of object
end % for all handles
Produced by color_mat2html, a customized BrainStorm 2.0 (Alpha) version of mat2html on Tue Oct 12 12:05:14 2004
Cross-Directory links are: ON