blob: 6aad7c5b05eedd0639bb5fc1a068452d71fcc95e [file] [log] [blame]
Jonathan Gordon0e5cec22008-03-05 09:58:30 +00001/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2008 by Jonathan Gordon
11 *
Daniel Stenberg2acc0ac2008-06-28 18:10:04 +000012 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
Jonathan Gordon0e5cec22008-03-05 09:58:30 +000016 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21
Bertrik Sikken28434692008-04-28 16:18:04 +000022#include <stdlib.h>
Jonathan Gordon0e5cec22008-03-05 09:58:30 +000023#include "config.h"
24#include "lcd.h"
Dave Chapman2b7d48e2008-03-09 23:53:46 +000025#include "lcd-remote.h"
Jonathan Gordon0e5cec22008-03-05 09:58:30 +000026#include "font.h"
27#include "sprintf.h"
28#include "string.h"
29#include "settings.h"
30#include "kernel.h"
31#include "system.h"
32#include "misc.h"
Jonathan Gordon0e5cec22008-03-05 09:58:30 +000033#include "viewport.h"
34#include "statusbar.h"
35#include "screen_access.h"
36
37int viewport_get_nb_lines(struct viewport *vp)
38{
39#ifdef HAVE_LCD_BITMAP
40 return vp->height/font_get(vp->font)->height;
41#else
42 (void)vp;
43 return 2;
44#endif
45}
46
47
48void viewport_set_defaults(struct viewport *vp, enum screen_type screen)
49{
50 vp->x = 0;
51 vp->width = screens[screen].width;
52
Jonathan Gordondaa83412008-05-04 10:58:05 +000053 vp->y = gui_statusbar_height();
Jonathan Gordon5ca15392008-03-26 03:35:24 +000054 vp->height = screens[screen].height - vp->y;
Jonathan Gordon0e5cec22008-03-05 09:58:30 +000055#ifdef HAVE_LCD_BITMAP
56 vp->drawmode = DRMODE_SOLID;
57 vp->font = FONT_UI; /* default to UI to discourage SYSFONT use */
58#endif
Dave Chapman2b7d48e2008-03-09 23:53:46 +000059
60#ifdef HAVE_REMOTE_LCD
61 /* We only need this test if there is a remote LCD */
62 if (screen == SCREEN_MAIN)
63#endif
Jonathan Gordon0e5cec22008-03-05 09:58:30 +000064 {
65#ifdef HAVE_LCD_COLOR
66 vp->fg_pattern = global_settings.fg_color;
67 vp->bg_pattern = global_settings.bg_color;
68 vp->lss_pattern = global_settings.lss_color;
69 vp->lse_pattern = global_settings.lse_color;
70 vp->lst_pattern = global_settings.lst_color;
71#elif LCD_DEPTH > 1
72 vp->fg_pattern = LCD_DEFAULT_FG;
73 vp->bg_pattern = LCD_DEFAULT_BG;
74#endif
75 }
Dave Chapman2b7d48e2008-03-09 23:53:46 +000076
77#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
78 if (screen == SCREEN_REMOTE)
79 {
80 vp->fg_pattern = LCD_REMOTE_DEFAULT_FG;
81 vp->bg_pattern = LCD_REMOTE_DEFAULT_BG;
82 }
83#endif
Jonathan Gordon0e5cec22008-03-05 09:58:30 +000084}