From 1c9122ae03f02f184a3fa0f1a09c62fa7a571e7c Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Tue, 3 Oct 2000 13:37:24 +0200 Subject: Displaying as much as possible of the current/next info (dropping characters that would display only partially) --- HISTORY | 2 ++ dvbapi.c | 4 ++-- dvbosd.c | 4 +++- interface.c | 11 +++++------ 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/HISTORY b/HISTORY index bae1fc7b..ce02264c 100644 --- a/HISTORY +++ b/HISTORY @@ -216,3 +216,5 @@ Video Disk Recorder Revision History title. - The 'Recordings' menu now displays a '*' to indicate new recordings. - Added the description of the timers.conf file to the FORMATS file. +- Displaying as much as possible of the current/next info (dropping characters + that would display only partially). diff --git a/dvbapi.c b/dvbapi.c index 9cc2d47e..04873fcc 100644 --- a/dvbapi.c +++ b/dvbapi.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbapi.c 1.29 2000/10/03 11:25:57 kls Exp $ + * $Id: dvbapi.c 1.30 2000/10/03 13:26:16 kls Exp $ */ #include "dvbapi.h" @@ -1583,7 +1583,7 @@ void cDvbApi::Text(int x, int y, const char *s, eDvbColor colorFg, eDvbColor col #ifdef DEBUG_OSD SetColor(colorFg, colorBg); wmove(window, y, x); // ncurses wants 'y' before 'x'! - waddstr(window, s); + waddnstr(window, s, cols - x); #else osd->Text(x * charWidth, y * lineHeight, s, colorFg, colorBg); #endif diff --git a/dvbosd.c b/dvbosd.c index 2ab01bc3..1e2c354e 100644 --- a/dvbosd.c +++ b/dvbosd.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbosd.c 1.1 2000/10/03 10:10:28 kls Exp $ + * $Id: dvbosd.c 1.2 2000/10/03 13:34:13 kls Exp $ */ #include "dvbosd.h" @@ -81,6 +81,8 @@ void cBitmap::Text(int x, int y, const char *s, eDvbColor ColorFg, eDvbColor Col int h = font->Height(s); while (s && *s) { const cFont::tCharData *CharData = font->CharData(*s++); + if (int(x + CharData->width) > width) + break; for (int row = 0; row < h; row++) { cFont::tPixelData PixelData = CharData->lines[row]; for (int col = CharData->width; col-- > 0; ) { diff --git a/interface.c b/interface.c index 5758d358..a0fca0ea 100644 --- a/interface.c +++ b/interface.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: interface.c 1.20 2000/10/02 16:23:53 kls Exp $ + * $Id: interface.c 1.21 2000/10/03 13:28:02 kls Exp $ */ #include "interface.h" @@ -355,25 +355,24 @@ eKeys cInterface::DisplayChannel(int Number, const char *Name, bool WithInfo) } if (Lines > 0) { const int t = 6; - int w = MenuColumns - t; int l = 1; cDvbApi::PrimaryDvbApi->Fill(0, 1, MenuColumns, Lines, clrBackground); if (*RunningTitle) { Write(0, l, EIT.GetRunningTime(), clrYellow, clrBackground); - snprintf(buffer, BufSize, "%.*s", w, RunningTitle); Write(t, l, buffer, clrCyan, clrBackground); + Write(t, l, RunningTitle, clrCyan, clrBackground); l++; } if (*RunningSubtitle) { - snprintf(buffer, BufSize, "%.*s", w, RunningSubtitle); Write(t, l, buffer, clrCyan, clrBackground); + Write(t, l, RunningSubtitle, clrCyan, clrBackground); l++; } if (*NextTitle) { Write(0, l, EIT.GetNextTime(), clrYellow, clrBackground); - snprintf(buffer, BufSize, "%.*s", w, NextTitle); Write(t, l, buffer, clrCyan, clrBackground); + Write(t, l, NextTitle, clrCyan, clrBackground); l++; } if (*NextSubtitle) { - snprintf(buffer, BufSize, "%.*s", w, NextSubtitle); Write(t, l, buffer, clrCyan, clrBackground); + Write(t, l, NextSubtitle, clrCyan, clrBackground); } cDvbApi::PrimaryDvbApi->Flush(); } -- cgit v1.2.3