diff options
Diffstat (limited to 'lib/tv/src/tv_pd_frames.erl')
-rw-r--r-- | lib/tv/src/tv_pd_frames.erl | 480 |
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)). + + + |