X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/44433f650cd3e5f9f66253b74d194fcb01578595..8964693920977ec8a494fea6b4aeac4bbc016b65:/lib/gui/ewindowstyleskinned.cpp diff --git a/lib/gui/ewindowstyleskinned.cpp b/lib/gui/ewindowstyleskinned.cpp index a3152e5f..0b20c925 100644 --- a/lib/gui/ewindowstyleskinned.cpp +++ b/lib/gui/ewindowstyleskinned.cpp @@ -8,7 +8,9 @@ DEFINE_REF(eWindowStyleSkinned); eWindowStyleSkinned::eWindowStyleSkinned() { - m_background_color = gRGB(0x808080); + // m_background_color = gRGB(0x808080); + + // TODO: initialize colors!! } void eWindowStyleSkinned::handleNewSize(eWindow *wnd, eSize &size, eSize &offset) @@ -33,11 +35,19 @@ void eWindowStyleSkinned::handleNewSize(eWindow *wnd, eSize &size, eSize &offset void eWindowStyleSkinned::paintWindowDecoration(eWindow *wnd, gPainter &painter, const std::string &title) { drawBorder(painter, eRect(ePoint(0, 0), wnd->size()), m_border[bsWindow], bpAll); + + if (m_fnt) + { + painter.setBackgroundColor(m_color[colWindowTitleBackground]); + painter.setForegroundColor(m_color[colWindowTitleForeground]); + painter.setFont(m_fnt); + painter.renderText(eRect(m_title_offset.width(), m_title_offset.height(), wnd->size().width() - m_title_offset.width(), m_border[bsWindow].m_border_top - m_title_offset.height()), title); + } } void eWindowStyleSkinned::paintBackground(gPainter &painter, const ePoint &offset, const eSize &size) { - painter.setBackgroundColor(m_background_color); + painter.setBackgroundColor(m_color[colBackground]); painter.clear(); } @@ -46,19 +56,23 @@ void eWindowStyleSkinned::setStyle(gPainter &painter, int what) switch (what) { case styleLabel: - painter.setForegroundColor(gColor(0x1F)); + painter.setForegroundColor(m_color[colLabelForeground]); break; case styleListboxSelected: - painter.setForegroundColor(gColor(0x1F)); - painter.setBackgroundColor(gColor(0x1A)); + painter.setForegroundColor(m_color[colListboxSelectedForeground]); + painter.setBackgroundColor(m_color[colListboxSelectedBackground]); break; case styleListboxNormal: - painter.setForegroundColor(gColor(0x1C)); - painter.setBackgroundColor(m_background_color); + painter.setForegroundColor(m_color[colListboxForeground]); + painter.setBackgroundColor(m_color[colListboxBackground]); break; case styleListboxMarked: - painter.setForegroundColor(gColor(0x2F)); - painter.setBackgroundColor(gColor(0x2A)); + painter.setForegroundColor(m_color[colListboxMarkedForeground]); + painter.setBackgroundColor(m_color[colListboxMarkedBackground]); + break; + case styleListboxMarkedAndSelected: + painter.setForegroundColor(m_color[colListboxMarkedAndSelectedForeground]); + painter.setBackgroundColor(m_color[colListboxMarkedAndSelectedBackground]); break; } } @@ -186,13 +200,13 @@ RESULT eWindowStyleSkinned::getFont(int what, ePtr &fnt) switch (what) { case fontStatic: - fnt = new gFont("Arial", 12); + fnt = new gFont("Regular", 12); break; case fontButton: - fnt = new gFont("Arial", 20); + fnt = new gFont("Regular", 20); break; case fontTitlebar: - fnt = new gFont("Arial", 25); + fnt = new gFont("Regular", 25); break; default: return -1; @@ -200,6 +214,11 @@ RESULT eWindowStyleSkinned::getFont(int what, ePtr &fnt) return 0; } +void eWindowStyleSkinned::setPixmap(int bs, int bp, ePtr &ptr) +{ + setPixmap(bs, bp, *(ptr.operator->())); +} + void eWindowStyleSkinned::setPixmap(int bs, int bp, gPixmap &pixmap) { if ((bs >= bsMax) || (bs < 0)) @@ -226,23 +245,36 @@ void eWindowStyleSkinned::setPixmap(int bs, int bp, gPixmap &pixmap) if (m_border[bs].m_pixmap[i]) if (m_border[bs].m_border_bottom < m_border[bs].m_pixmap[i]->size().height()) m_border[bs].m_border_bottom = m_border[bs].m_pixmap[i]->size().height(); - for (int i = 0; i < 9; i += 3) - if (m_border[bs].m_pixmap[i]) - if (m_border[bs].m_border_left < m_border[bs].m_pixmap[i]->size().width()) - m_border[bs].m_border_left = m_border[bs].m_pixmap[i]->size().width(); - for (int i = 2; i < 9; i += 3) - if (m_border[bs].m_pixmap[i]) - if (m_border[bs].m_border_right < m_border[bs].m_pixmap[i]->size().width()) - m_border[bs].m_border_right = m_border[bs].m_pixmap[i]->size().width(); + + if (m_border[bs].m_pixmap[3]) + m_border[bs].m_border_left = m_border[bs].m_pixmap[3]->size().width(); + else + m_border[bs].m_border_left = 0; + + if (m_border[bs].m_pixmap[5]) + m_border[bs].m_border_right = m_border[bs].m_pixmap[5]->size().width(); + else + m_border[bs].m_border_right = 0; + eDebug("recalced border size for %d: %d:%d %d:%d", bs, m_border[bs].m_border_left, m_border[bs].m_border_top, m_border[bs].m_border_right, m_border[bs].m_border_bottom); } -void eWindowStyleSkinned::setDefaultBackgroundColor(const gRGB &back) +void eWindowStyleSkinned::setColor(int what, const gRGB &col) +{ + if ((what < colMax) && (what >= 0)) + m_color[what] = col; +} + +void eWindowStyleSkinned::setTitleOffset(const eSize &offset) +{ + m_title_offset = offset; +} + +void eWindowStyleSkinned::setTitleFont(gFont *fnt) { - m_background_color = back; - eDebug("set default background color!"); + m_fnt = fnt; }