[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

    bst_message_window                 C:\BrainStorm_2001\Toolbox\bst_message_window.m
    bst_mriviewer                      C:\BrainStorm_2001\Toolbox\bst_mriviewer.m
    bst_splashscreen                   C:\BrainStorm_2001\Toolbox\bst_splashscreen.m
    bst_static_taskbar                 C:\BrainStorm_2001\Toolbox\bst_static_taskbar.m
    covariance_plots                   C:\BrainStorm_2001\Toolbox\covariance_plots.m
    data_manager                       C:\BrainStorm_2001\Toolbox\data_manager.m
    data_selector_cb                   C:\BrainStorm_2001\Toolbox\data_selector_cb.m
    database_manager                   C:\BrainStorm_2001\Toolbox\database_manager.m
    dataplot_cb                        C:\BrainStorm_2001\Toolbox\dataplot_cb.m
    file_selection_win                 C:\BrainStorm_2001\Toolbox\file_selection_win.m
    headmodeler_gui                    C:\BrainStorm_2001\Toolbox\headmodeler_gui.m
    help_manager                       C:\BrainStorm_2001\Toolbox\help_manager.m
    importdata                         C:\BrainStorm_2001\Toolbox\importdata.m
    layout_manager                     C:\BrainStorm_2001\Toolbox\layout_manager.m
    manage_corticalscouts              C:\BrainStorm_2001\Toolbox\manage_corticalscouts.m
    mri_parameters                     C:\BrainStorm_2001\Toolbox\mri_parameters.m
    mri_read_tool                      C:\BrainStorm_2001\Toolbox\mri_read_tool.m
    mritool_cb                         C:\BrainStorm_2001\Toolbox\mritool_cb.m
    parametric_estimation              C:\BrainStorm_2001\Toolbox\parametric_estimation.m
    pcs_params                         C:\BrainStorm_2001\Toolbox\pcs_params.m
    phantom_channel_assignment         C:\BrainStorm_2001\Toolbox\phantom_channel_assignment.m
    rap_music_parameters               C:\BrainStorm_2001\Toolbox\rap_music_parameters.m
    rapmusic_gui                       C:\BrainStorm_2001\Toolbox\rapmusic_gui.m
    results_time_series                C:\BrainStorm_2001\Toolbox\results_time_series.m
    results_visualization              C:\BrainStorm_2001\Toolbox\results_visualization.m
    select_folder                      C:\BrainStorm_2001\Toolbox\select_folder.m
    set_sourceviewing_parameters       C:\BrainStorm_2001\Toolbox\set_sourceviewing_parameters.m
    show_signal_decomposition          C:\BrainStorm_2001\Toolbox\show_signal_decomposition.m
    simulator                          C:\BrainStorm_2001\Toolbox\simulator.m
    simulator_mri                      C:\BrainStorm_2001\Toolbox\simulator_mri.m
    sourceimaging                      C:\BrainStorm_2001\Toolbox\sourceimaging.m
    study_editor                       C:\BrainStorm_2001\Toolbox\study_editor.m
    subject_editor                     C:\BrainStorm_2001\Toolbox\subject_editor.m
    tess_align_tool                    C:\BrainStorm_2001\Toolbox\tess_align_tool.m
    tessellation_handler               C:\BrainStorm_2001\Toolbox\tessellation_handler.m
    web_pages                          C:\BrainStorm_2001\Toolbox\web_pages.m
    zscore_gui                         C:\BrainStorm_2001\Toolbox\zscore_gui.m

### 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 Nov 2 16:17:59 2004
Cross-Directory links are: ON