aboutsummaryrefslogtreecommitdiffstats
path: root/lib/tv/src/tv_pd_frames.erl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tv/src/tv_pd_frames.erl')
-rw-r--r--lib/tv/src/tv_pd_frames.erl480
1 files changed, 480 insertions, 0 deletions
diff --git a/lib/tv/src/tv_pd_frames.erl b/lib/tv/src/tv_pd_frames.erl
new file mode 100644
index 0000000000..4e091ac9f0
--- /dev/null
+++ b/lib/tv/src/tv_pd_frames.erl
@@ -0,0 +1,480 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 1997-2009. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%% the License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% %CopyrightEnd%
+-module(tv_pd_frames).
+
+
+
+-export([create_display_frames/4, resize_display_frames/3]).
+
+
+
+
+-include("tv_int_def.hrl").
+-include("tv_pd_int_def.hrl").
+
+
+
+
+
+
+
+%%%*********************************************************************
+%%% EXTERNAL FUNCTIONS
+%%%*********************************************************************
+
+
+
+
+%%======================================================================
+%% Function:
+%%
+%% Return Value:
+%%
+%% Description:
+%%
+%% Parameters:
+%%======================================================================
+
+
+create_display_frames(WindowId, WindowWidth, WindowHeight, FrameP) ->
+ {DisplayId, DisplayWidth, DisplayHeight} =
+ create_frame(WindowId,
+ get_display_coords(WindowWidth, WindowHeight),
+ ?DEFAULT_BG_COLOR,
+ 0),
+
+ {ToolbarId, ToolbarWidth, ToolbarHeight} = create_toolbar_frame(DisplayId,
+ DisplayWidth),
+
+ {SheetFrameId, SheetBgFrameId, SheetFrameWidth, SheetFrameHeight} =
+ create_sheet_frames(DisplayId,
+ DisplayWidth,
+ DisplayHeight),
+
+ {GridFrameId, GridBgFrameId, GridFrameWidth, GridFrameHeight} =
+ create_grid_frames(SheetFrameId,
+ SheetFrameWidth,
+ SheetFrameHeight),
+
+
+ FrameP#frame_params{display_id = DisplayId,
+ toolbar_frame_id = ToolbarId,
+ toolbar_frame_width = ToolbarWidth,
+ toolbar_frame_height = ToolbarHeight,
+ sheet_frame_id = SheetFrameId,
+ sheet_frame_width = SheetFrameWidth,
+ sheet_frame_height = SheetFrameHeight,
+ sheet_bgframe_id = SheetBgFrameId,
+ grid_frame_id = GridFrameId,
+ grid_frame_width = GridFrameWidth,
+ grid_frame_height = GridFrameHeight,
+ grid_bgframe_id = GridBgFrameId
+ }.
+
+
+
+
+
+
+
+%%======================================================================
+%% Function:
+%%
+%% Return Value:
+%%
+%% Description:
+%%
+%% Parameters:
+%%======================================================================
+
+
+resize_display_frames(NewW, NewH, FrameP) ->
+ #frame_params{display_id = DispId,
+ toolbar_frame_id = ToolbarId,
+ sheet_frame_id = SheetFgId,
+ sheet_bgframe_id = SheetBgId,
+ grid_frame_id = GridFgId,
+ grid_bgframe_id = GridBgId} = FrameP,
+
+ {NewDispW, NewDispH} = config_frame(DispId, get_display_coords(NewW, NewH)),
+ {NewToolW, NewToolH} = resize_toolbar(ToolbarId, NewDispW),
+ {NewSheetFgW, NewSheetFgH} = resize_sheet_frames(SheetFgId, SheetBgId, NewDispW,
+ NewDispH),
+
+ {NewGridFgW, NewGridFgH} = resize_grid_frames(GridFgId, GridBgId, NewSheetFgW,
+ NewSheetFgH),
+
+ FrameP#frame_params{toolbar_frame_width = NewToolW,
+ toolbar_frame_height = NewToolH,
+ sheet_frame_width = NewSheetFgW,
+ sheet_frame_height = NewSheetFgH,
+ grid_frame_width = NewGridFgW,
+ grid_frame_height = NewGridFgH
+ }.
+
+
+
+
+
+
+
+
+%%%********************************************************************
+%%% INTERNAL FUNCTIONS
+%%%********************************************************************
+
+
+
+
+
+%%======================================================================
+%% Function:
+%%
+%% Return Value:
+%%
+%% Description:
+%%
+%% Parameters:
+%%======================================================================
+
+
+config_frame(Id, {Width, Height, Xpos, Ypos}) ->
+ gs:config(Id, [{width, Width},
+ {height, Height},
+ {x, Xpos},
+ {y, Ypos}
+ ]),
+ {Width, Height}.
+
+
+
+
+
+
+
+%%======================================================================
+%% Function:
+%%
+%% Return Value:
+%%
+%% Description:
+%%
+%% Parameters:
+%%======================================================================
+
+
+create_frame(ParentId, {Width, Height, Xpos, Ypos}, Color, BorderWidth) ->
+ Id = gs:frame(ParentId, [{width, Width},
+ {height, Height},
+ {x, Xpos},
+ {y, Ypos},
+ {bw, BorderWidth},
+ {bg, Color}
+ ]),
+ {Id, Width, Height}.
+
+
+
+
+
+
+
+
+
+%%======================================================================
+%% Function:
+%%
+%% Return Value:
+%%
+%% Description:
+%%
+%% Parameters:
+%%======================================================================
+
+
+create_grid_frames(SheetFrameId, SheetFrameWidth, SheetFrameHeight) ->
+ {BgId, _W, _H} =
+ create_frame(SheetFrameId,
+ get_grid_frame_coords(bg, SheetFrameWidth, SheetFrameHeight),
+ ?BLACK,
+ 0),
+ {FgId, FgWidth, FgHeight} =
+ create_frame(SheetFrameId,
+ get_grid_frame_coords(fg, SheetFrameWidth, SheetFrameHeight),
+ ?DEFAULT_BG_COLOR,
+ 0),
+ {FgId, BgId, FgWidth, FgHeight}.
+
+
+
+
+
+
+
+
+%%======================================================================
+%% Function:
+%%
+%% Return Value:
+%%
+%% Description:
+%%
+%% Parameters:
+%%======================================================================
+
+
+create_sheet_frames(DispId, DispWidth, DispHeight) ->
+ {BgId, _W, _H} = create_frame(DispId,
+ get_sheet_frame_coords(bg, DispWidth, DispHeight),
+ ?BLACK,
+ 0),
+ {FgId, FgWidth, FgHeight} =
+ create_frame(DispId,
+ get_sheet_frame_coords(fg, DispWidth, DispHeight),
+ ?DEFAULT_BG_COLOR,
+ 0),
+ {FgId, BgId, FgWidth, FgHeight}.
+
+
+
+
+
+
+
+%%======================================================================
+%% Function:
+%%
+%% Return Value:
+%%
+%% Description:
+%%
+%% Parameters:
+%%======================================================================
+
+
+create_toolbar_frame(DispId, DispWidth) ->
+ create_frame(DispId, get_toolbar_coords(DispWidth), ?DEFAULT_BG_COLOR, 0).
+
+
+
+
+
+
+
+%%======================================================================
+%% Function:
+%%
+%% Return Value:
+%%
+%% Description:
+%%
+%% Parameters:
+%%======================================================================
+
+
+get_display_coords(WindowWidth, WindowHeight) ->
+ Xpos = 4,
+ {WindowWidth - 2 * Xpos, WindowHeight - ?MENUBAR_HEIGHT - Xpos, Xpos, ?MENUBAR_HEIGHT}.
+
+
+
+
+
+
+
+
+%%======================================================================
+%% Function:
+%%
+%% Return Value:
+%%
+%% Description:
+%%
+%% Parameters:
+%%======================================================================
+
+
+get_grid_frame_coords(bg, FrameWidth, FrameHeight) ->
+ get_grid_frame_coords2(FrameWidth, FrameHeight, 0);
+get_grid_frame_coords(fg, FrameWidth, FrameHeight) ->
+ get_grid_frame_coords2(FrameWidth, FrameHeight, 1).
+
+
+
+
+
+
+
+
+%%======================================================================
+%% Function:
+%%
+%% Return Value:
+%%
+%% Description:
+%%
+%% Parameters:
+%%======================================================================
+
+
+get_grid_frame_coords2(FrameWidth, FrameHeight, BorderWidth) ->
+ Xpos = 0,
+ Ypos = 0,
+ Width = FrameWidth - ?VSCALE_WIDTH - Xpos - BorderWidth,
+ Height = FrameHeight - ?HSCALE_HEIGHT - Ypos - BorderWidth,
+ {Width, Height, Xpos, Ypos}.
+
+
+
+
+
+
+%%======================================================================
+%% Function:
+%%
+%% Return Value:
+%%
+%% Description:
+%%
+%% Parameters:
+%%======================================================================
+
+
+get_sheet_frame_coords(bg, FrameWidth, FrameHeight) ->
+ get_sheet_frame_coords2(FrameWidth, FrameHeight, 0);
+get_sheet_frame_coords(fg, FrameWidth, FrameHeight) ->
+ get_sheet_frame_coords2(FrameWidth, FrameHeight, 1).
+
+
+
+
+
+
+
+
+%%======================================================================
+%% Function:
+%%
+%% Return Value:
+%%
+%% Description:
+%%
+%% Parameters:
+%%======================================================================
+
+
+get_sheet_frame_coords2(FrameWidth, FrameHeight, BorderWidth) ->
+ Xpos = BorderWidth,
+ Ypos = ?TOOLBAR_HEIGHT + BorderWidth,
+ Width = FrameWidth - 2 * BorderWidth,
+ Height = FrameHeight - Ypos - ?MISC_AREA_HEIGHT - BorderWidth,
+ {Width, Height, Xpos, Ypos}.
+
+
+
+
+
+
+
+
+%%======================================================================
+%% Function:
+%%
+%% Return Value:
+%%
+%% Description:
+%%
+%% Parameters:
+%%======================================================================
+
+
+get_toolbar_coords(DispWidth) ->
+ Xpos = 0,
+ {DispWidth - 2 * Xpos, ?TOOLBAR_HEIGHT, Xpos, 0}.
+
+
+
+
+
+
+
+
+
+%%======================================================================
+%% Function:
+%%
+%% Return Value:
+%%
+%% Description:
+%%
+%% Parameters:
+%%======================================================================
+
+
+resize_grid_frames(FgId, BgId, ParentWidth, ParentHeight) ->
+ config_frame(BgId, get_grid_frame_coords(bg, ParentWidth, ParentHeight)),
+ config_frame(FgId, get_grid_frame_coords(fg, ParentWidth, ParentHeight)).
+
+
+
+
+
+
+
+
+
+
+%%======================================================================
+%% Function:
+%%
+%% Return Value:
+%%
+%% Description:
+%%
+%% Parameters:
+%%======================================================================
+
+
+resize_sheet_frames(FgId, BgId, ParentWidth, ParentHeight) ->
+ config_frame(BgId, get_sheet_frame_coords(bg, ParentWidth, ParentHeight)),
+ config_frame(FgId, get_sheet_frame_coords(fg, ParentWidth, ParentHeight)).
+
+
+
+
+
+
+
+
+
+%%======================================================================
+%% Function:
+%%
+%% Return Value:
+%%
+%% Description:
+%%
+%% Parameters:
+%%======================================================================
+
+
+resize_toolbar(Id, DispWidth) ->
+ config_frame(Id, get_toolbar_coords(DispWidth)).
+
+
+