%% Axes inside layouts
% This example demonstrates how axes are affected by being placed into
% layouts. The layouts take into account the "ActivePositionProperty" in
% order to determine whether to set the "Position" or "OuterPosition"
% (default) property of the axes.

%% Open the window
% Open a new figure window and remove the toolbar and menus
window = figure( 'Name', 'Axes inside layouts', ...
    'MenuBar', 'none', ...
    'Toolbar', 'none', ...
    'NumberTitle', 'off' );

%% Create the layout
% The layout involves two axes side by side. This is done using a
% flexible horizontal box. The left-hand axes is left with the
% ActivePositionProperty set to "OuterPosition", but the right-hand axes is
% switched to use "Position"
hbox = uiextras.HBoxFlex('Parent', window, 'Spacing', 3);
axes1 = axes( 'Parent', hbox, ...
    'ActivePositionProperty', 'OuterPosition' );
axes2 = axes( 'Parent', hbox, ...
    'ActivePositionProperty', 'Position' );
set( hbox, 'Sizes', [-2 -1] );

%% Fill the axes
% Using "OuterPosition" (left-hand axes) is the normal mode and looks good
% for virtually any plot type. Using "Position" is only really useful for
% 2D plots with the axes turned off, such as images
x = membrane( 1, 15 );
surf( axes1, x );
lighting( axes1, 'gouraud' );
shading( axes1, 'interp' );
l = light( 'Parent', axes1 );
camlight( l, 'head' );
axis( axes1, 'tight' );

imagesc( x, 'Parent', axes2 );
set( axes2, 'xticklabel', [], 'yticklabel', [] );