%% %% %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)).