mirror of
https://projects.vdr-developer.org/git/vdr-plugin-tvguide.git
synced 2023-10-05 15:01:48 +02:00
Refactor CutText in horizontal epgview
This commit is contained in:
parent
c77f74321f
commit
ffd3e2c79f
@ -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);
|
||||
|
34
tools.c
34
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);
|
||||
} else {
|
||||
int i = std::max((actWidth - width) / font->Size(), 1);
|
||||
do {
|
||||
text = text.substr(0, text.length() - i);
|
||||
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);
|
||||
sstrText << text << "....";
|
||||
actWidth = font->Width(sstrText.str().c_str());
|
||||
i = 1;
|
||||
}
|
||||
while ((actWidth > width) && (text.length() > 0));
|
||||
std::stringstream sstrText2;
|
||||
sstrText2 << cuttedTextNative << "...";
|
||||
cuttedText = sstrText2.str();
|
||||
sstrText2 << text << "...";
|
||||
return sstrText2.str();
|
||||
}
|
||||
}
|
||||
return cuttedText;
|
||||
}
|
||||
|
||||
/****************************************************************************************
|
||||
|
2
view.c
2
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);
|
||||
|
Loading…
Reference in New Issue
Block a user