summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--epggrid.c7
-rw-r--r--tools.c36
-rw-r--r--view.c2
3 files changed, 16 insertions, 29 deletions
diff --git a/epggrid.c b/epggrid.c
index a67188c..897851f 100644
--- a/epggrid.c
+++ b/epggrid.c
@@ -131,12 +131,7 @@ void cEpgGrid::drawText() {
}
}
} else if (config.displayMode == eHorizontal) {
- if (Width() / geoManager.minutePixel < 10) {
- int titleY = (geoManager.rowHeight - fontManager.FontGridHorizontal->Height()) / 2;
- pixmap->DrawText(cPoint(borderWidth - 2, titleY), "...", colorText, colorTextBack, fontManager.FontGridHorizontal);
- return;
- }
- cString strTitle = CutText(event->Title(), viewportHeight, fontManager.FontGridHorizontal).c_str();
+ cString strTitle = CutText(event->Title(), viewportHeight - borderWidth, fontManager.FontGridHorizontal).c_str();
int titleY = 0;
if (config.showTimeInGrid) { // mit Zeitangabe im Grid
pixmap->DrawText(cPoint(borderWidth, borderWidth), *timeString, colorText, colorTextBack, fontManager.FontGridHorizontalSmall);
diff --git a/tools.c b/tools.c
index 075c0ce..229bf9e 100644
--- a/tools.c
+++ b/tools.c
@@ -24,31 +24,23 @@ cPlugin *GetScraperPlugin(void) {
* CUTTEXT
****************************************************************************************/
std::string CutText(std::string text, int width, const cFont *font) {
- if (width <= font->Size())
+ int actWidth = font->Width(text.c_str());
+ if (actWidth <= width) {
return text.c_str();
- if (font->Width(text.c_str()) < width)
- return text.c_str();
- cTextWrapper twText;
- twText.Set(text.c_str(), font, width);
- std::string cuttedTextNative = twText.GetLine(0);
- std::stringstream sstrText;
- sstrText << cuttedTextNative << "...";
- std::string cuttedText = sstrText.str();
- int actWidth = font->Width(cuttedText.c_str());
- if (actWidth > width) {
- int overlap = actWidth - width;
- int charWidth = font->Width(".");
- if (charWidth == 0)
- charWidth = 1;
- int cutChars = overlap / charWidth;
- if (cutChars > 0) {
- cuttedTextNative = cuttedTextNative.substr(0, cuttedTextNative.length() - cutChars);
- std::stringstream sstrText2;
- sstrText2 << cuttedTextNative << "...";
- cuttedText = sstrText2.str();
+ } else {
+ int i = std::max((actWidth - width) / font->Size(), 1);
+ do {
+ text = text.substr(0, text.length() - i);
+ std::stringstream sstrText;
+ sstrText << text << "....";
+ actWidth = font->Width(sstrText.str().c_str());
+ i = 1;
}
+ while ((actWidth > width) && (text.length() > 0));
+ std::stringstream sstrText2;
+ sstrText2 << text << "...";
+ return sstrText2.str();
}
- return cuttedText;
}
/****************************************************************************************
diff --git a/view.c b/view.c
index f66938a..31174bf 100644
--- a/view.c
+++ b/view.c
@@ -116,7 +116,7 @@ void cView::DrawHeader(void) {
int yDateTime = border / 2;
int yTitle = (headerHeight - fontHeaderLarge->Height()) / 2;
int ySubtitle = headerHeight - fontHeader->Height() - border / 3;
- int textWidthMax = headerWidth - xText;
+ int textWidthMax = headerWidth - xText - border / 2;
pixmapHeader->DrawText(cPoint(xText, yDateTime), CutText(dateTime, textWidthMax, fontHeader).c_str(), theme.Color(clrFont), theme.Color(clrStatusHeader), fontHeader);
pixmapHeader->DrawText(cPoint(xText, yTitle), CutText(title, textWidthMax, fontHeaderLarge).c_str(), theme.Color(clrFont), theme.Color(clrStatusHeader), fontHeaderLarge);
pixmapHeader->DrawText(cPoint(xText, ySubtitle), CutText(subTitle, textWidthMax, fontHeader).c_str(), theme.Color(clrFont), theme.Color(clrStatusHeader), fontHeader);