本文整理汇总了C++中gPainter类的典型用法代码示例。如果您正苦于以下问题:C++ gPainter类的具体用法?C++ gPainter怎么用?C++ gPainter使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了gPainter类的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: clearRegionHelper
static void clearRegionHelper(gPainter &painter, eListboxStyle *local_style, const ePoint &offset, ePyObject &pbackColor, bool cursorValid, bool clear=true)
{
if (pbackColor)
{
unsigned int color = PyInt_AsUnsignedLongMask(pbackColor);
painter.setBackgroundColor(gRGB(color));
}
else if (local_style)
{
if (local_style && local_style->m_background_color_set)
painter.setBackgroundColor(local_style->m_background_color);
if (local_style->m_background && cursorValid)
{
if (local_style->m_transparent_background)
painter.blit(local_style->m_background, offset, eRect(), gPainter::BT_ALPHATEST);
else
painter.blit(local_style->m_background, offset, eRect(), 0);
return;
}
else if (local_style->m_transparent_background)
return;
}
if (clear)
painter.clear();
}
示例2: doPaint
void eWidget::doPaint(gPainter &painter, const gRegion &r, int layer)
{
if (m_visible_with_childs.empty())
return;
gRegion region = r, childs = r;
/* we were in parent's space, now we are in local space */
region.moveBy(-position());
painter.moveOffset(position());
/* check if there's anything for us to paint */
if (layer == m_layer)
{
region &= m_visible_region;
if (!region.empty())
{
painter.resetClip(region);
event(evtPaint, ®ion, &painter);
}
}
childs.moveBy(-position());
/* walk all childs */
for (ePtrList<eWidget>::iterator i(m_childs.begin()); i != m_childs.end(); ++i)
i->doPaint(painter, childs, layer);
painter.moveOffset(-position());
}
示例3: setStyle
void eWindowStyleSimple::setStyle(gPainter &painter, int what)
{
switch (what)
{
case styleLabel:
painter.setForegroundColor(gColor(0x1F));
break;
case styleListboxSelected:
painter.setForegroundColor(gColor(0x1F));
painter.setBackgroundColor(gColor(0x1A));
break;
case styleListboxNormal:
painter.setForegroundColor(gColor(0x1C));
painter.setBackgroundColor(m_background_color);
break;
case styleListboxMarked:
painter.setForegroundColor(gColor(0x2F));
painter.setBackgroundColor(gColor(0x2A));
break;
case styleListboxMarkedAndSelected:
painter.setForegroundColor(gColor(0x3F));
painter.setBackgroundColor(gColor(0x3A));
break;
}
}
示例4: clearRegion
static void clearRegion(gPainter &painter, eWindowStyle &style, eListboxStyle *local_style, ePyObject pforeColor, ePyObject pforeColorSelected, ePyObject pbackColor, ePyObject pbackColorSelected, int selected, gRegion &rc, eRect &sel_clip, const ePoint &offset, bool cursorValid, bool clear=true)
{
if (selected && sel_clip.valid())
{
gRegion part = rc - sel_clip;
if (!part.empty())
{
painter.clip(part);
style.setStyle(painter, eWindowStyle::styleListboxNormal);
clearRegionHelper(painter, local_style, offset, pbackColor, cursorValid, clear);
painter.clippop();
selected = 0;
}
part = rc & sel_clip;
if (!part.empty())
{
painter.clip(part);
style.setStyle(painter, eWindowStyle::styleListboxSelected);
clearRegionSelectedHelper(painter, local_style, offset, pbackColorSelected, cursorValid, clear);
painter.clippop();
selected = 1;
}
}
else if (selected)
{
style.setStyle(painter, eWindowStyle::styleListboxSelected);
clearRegionSelectedHelper(painter, local_style, offset, pbackColorSelected, cursorValid, clear);
if (local_style && local_style->m_selection)
painter.blit(local_style->m_selection, offset, eRect(), gPainter::BT_ALPHATEST);
}
else
{
style.setStyle(painter, eWindowStyle::styleListboxNormal);
clearRegionHelper(painter, local_style, offset, pbackColor, cursorValid, clear);
}
if (selected)
{
if (pforeColorSelected)
{
unsigned int color = PyInt_AsUnsignedLongMask(pforeColorSelected);
painter.setForegroundColor(gRGB(color));
}
/* if we have a local foreground color set, use that. */
else if (local_style && local_style->m_foreground_color_selected_set)
painter.setForegroundColor(local_style->m_foreground_color_selected);
}
else
{
if (pforeColor)
{
unsigned int color = PyInt_AsUnsignedLongMask(pforeColor);
painter.setForegroundColor(gRGB(color));
}
/* if we have a local foreground color set, use that. */
else if (local_style && local_style->m_foreground_color_set)
painter.setForegroundColor(local_style->m_foreground_color);
}
}
示例5: drawFrame
void eWindowStyleSimple::drawFrame(gPainter &painter, const eRect &frame, int what)
{
gColor c1, c2;
switch (what)
{
case frameButton:
c1 = m_border_color_tl;
c2 = m_border_color_br;
break;
case frameListboxEntry:
c1 = m_border_color_br;
c2 = m_border_color_tl;
break;
}
painter.setForegroundColor(c2);
painter.line(frame.topLeft1(), frame.topRight1());
painter.line(frame.topRight1(), frame.bottomRight1());
painter.setForegroundColor(c1);
painter.line(frame.bottomRight1(), frame.bottomLeft1());
painter.line(frame.bottomLeft1(), frame.topLeft1());
}
示例6: if
void eListboxServiceContent::paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected)
{
painter.clip(eRect(offset, m_itemsize));
int marked = 0;
if (m_current_marked && selected)
marked = 2;
else if (cursorValid() && isMarked(*m_cursor))
{
if (selected)
marked = 2;
else
marked = 1;
}
else
style.setStyle(painter, selected ? eWindowStyle::styleListboxSelected : eWindowStyle::styleListboxNormal);
eListboxStyle *local_style = 0;
/* get local listbox style, if present */
if (m_listbox)
local_style = m_listbox->getLocalStyle();
if (marked == 1) // marked
{
style.setStyle(painter, eWindowStyle::styleListboxMarked);
if (m_color_set[markedForeground])
painter.setForegroundColor(m_color[markedForeground]);
if (m_color_set[markedBackground])
painter.setBackgroundColor(m_color[markedBackground]);
}
else if (marked == 2) // marked and selected
{
style.setStyle(painter, eWindowStyle::styleListboxMarkedAndSelected);
if (m_color_set[markedForegroundSelected])
painter.setForegroundColor(m_color[markedForegroundSelected]);
if (m_color_set[markedBackgroundSelected])
painter.setBackgroundColor(m_color[markedBackgroundSelected]);
}
else if (local_style)
{
if (selected)
{
/* if we have a local background color set, use that. */
if (local_style->m_background_color_selected_set)
painter.setBackgroundColor(local_style->m_background_color_selected);
/* same for foreground */
if (local_style->m_foreground_color_selected_set)
painter.setForegroundColor(local_style->m_foreground_color_selected);
}
else
{
/* if we have a local background color set, use that. */
if (local_style->m_background_color_set)
painter.setBackgroundColor(local_style->m_background_color);
/* same for foreground */
if (local_style->m_foreground_color_set)
painter.setForegroundColor(local_style->m_foreground_color);
}
}
if (!local_style || !local_style->m_transparent_background)
/* if we have no transparent background */
{
/* blit background picture, if available (otherwise, clear only) */
if (local_style && local_style->m_background)
painter.blit(local_style->m_background, offset, eRect(), 0);
else
painter.clear();
} else
{
if (local_style->m_background)
painter.blit(local_style->m_background, offset, eRect(), gPainter::BT_ALPHATEST);
else if (selected && !local_style->m_selection)
painter.clear();
}
if (cursorValid())
{
/* get service information */
ePtr<iStaticServiceInformation> service_info;
m_service_center->info(*m_cursor, service_info);
eServiceReference ref = *m_cursor;
bool isMarker = ref.flags & eServiceReference::isMarker;
bool isPlayable = !(ref.flags & eServiceReference::isDirectory || isMarker);
ePtr<eServiceEvent> evt;
bool serviceAvail = true;
#ifndef FORCE_SERVICEAVAIL
if (!marked && isPlayable && service_info && m_is_playable_ignore.valid() && !service_info->isPlayable(*m_cursor, m_is_playable_ignore))
{
if (m_color_set[serviceNotAvail])
painter.setForegroundColor(m_color[serviceNotAvail]);
else
painter.setForegroundColor(gRGB(0xbbbbbb));
serviceAvail = false;
}
#endif
if (selected && local_style && local_style->m_selection)
//.........这里部分代码省略.........
示例7: paintBackground
void eWindowStyleSimple::paintBackground(gPainter &painter, const ePoint &offset, const eSize &size)
{
painter.setBackgroundColor(m_background_color);
painter.clear();
}
示例8: paintWindowDecoration
void eWindowStyleSimple::paintWindowDecoration(eWindow *wnd, gPainter &painter, const std::string &title)
{
painter.setForegroundColor(m_title_color_back);
painter.fill(eRect(2, 2, wnd->size().width() - 4, m_border_top - 4));
painter.setBackgroundColor(m_title_color_back);
painter.setForegroundColor(m_title_color);
painter.setFont(m_fnt);
painter.renderText(eRect(3, 3, wnd->size().width() - 6, m_border_top - 6), title);
eRect frame(ePoint(0, 0), wnd->size());
painter.setForegroundColor(m_background_color);
painter.line(frame.topLeft1(), frame.topRight1());
painter.line(frame.topLeft1(), frame.bottomLeft1());
painter.setForegroundColor(m_border_color_tl);
painter.line(frame.topLeft1()+eSize(1,1), frame.topRight1()+eSize(0,1));
painter.line(frame.topLeft1()+eSize(1,1), frame.bottomLeft1()+eSize(1,0));
painter.setForegroundColor(m_border_color_br);
painter.line(frame.bottomLeft()+eSize(1,-1), frame.bottomRight()+eSize(0,-1));
painter.line(frame.topRight1()+eSize(-1,1), frame.bottomRight1()+eSize(-1, 0));
painter.line(frame.bottomLeft()+eSize(1,-2), frame.bottomRight()+eSize(0,-2));
painter.line(frame.topRight1()+eSize(-0,1), frame.bottomRight1()+eSize(-0, 0));
}
示例9: if
void eListboxServiceContent::paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected)
{
painter.clip(eRect(offset, m_itemsize));
int marked = 0;
if (m_current_marked && selected)
marked = 2;
else if (cursorValid() && isMarked(*m_cursor))
{
if (selected)
marked = 2;
else
marked = 1;
}
else
style.setStyle(painter, selected ? eWindowStyle::styleListboxSelected : eWindowStyle::styleListboxNormal);
eListboxStyle *local_style = 0;
/* get local listbox style, if present */
if (m_listbox)
local_style = m_listbox->getLocalStyle();
if (marked == 1) // marked
{
style.setStyle(painter, eWindowStyle::styleListboxMarked);
if (m_color_set[markedForeground])
painter.setForegroundColor(m_color[markedForeground]);
if (m_color_set[markedBackground])
painter.setBackgroundColor(m_color[markedBackground]);
}
else if (marked == 2) // marked and selected
{
style.setStyle(painter, eWindowStyle::styleListboxMarkedAndSelected);
if (m_color_set[markedForegroundSelected])
painter.setForegroundColor(m_color[markedForegroundSelected]);
if (m_color_set[markedBackgroundSelected])
painter.setBackgroundColor(m_color[markedBackgroundSelected]);
}
else if (local_style)
{
if (selected)
{
/* if we have a local background color set, use that. */
if (local_style->m_background_color_selected_set)
painter.setBackgroundColor(local_style->m_background_color_selected);
/* same for foreground */
if (local_style->m_foreground_color_selected_set)
painter.setForegroundColor(local_style->m_foreground_color_selected);
}
else
{
/* if we have a local background color set, use that. */
if (local_style->m_background_color_set)
painter.setBackgroundColor(local_style->m_background_color);
/* same for foreground */
if (local_style->m_foreground_color_set)
painter.setForegroundColor(local_style->m_foreground_color);
}
}
if (!local_style || !local_style->m_transparent_background)
/* if we have no transparent background */
{
/* blit background picture, if available (otherwise, clear only) */
if (local_style && local_style->m_background)
painter.blit(local_style->m_background, offset, eRect(), 0);
else
painter.clear();
} else
{
if (local_style->m_background)
painter.blit(local_style->m_background, offset, eRect(), gPainter::BT_ALPHATEST);
else if (selected && !local_style->m_selection)
painter.clear();
}
if (cursorValid())
{
/* get service information */
ePtr<iStaticServiceInformation> service_info;
m_service_center->info(*m_cursor, service_info);
eServiceReference ref = *m_cursor;
bool isMarker = ref.flags & eServiceReference::isMarker;
bool isPlayable = !(ref.flags & eServiceReference::isDirectory || isMarker);
#define PB_BorderWidth 2
#define PB_Height 6
int paintProgress = 0; /* if non zero draw a progress this size and shorten event string width with it */
ePtr<eServiceEvent> evt;
bool serviceAvail = true;
if (!marked && isPlayable && service_info && m_is_playable_ignore.valid() && !service_info->isPlayable(*m_cursor, m_is_playable_ignore))
{
if (m_color_set[serviceNotAvail])
painter.setForegroundColor(m_color[serviceNotAvail]);
else
painter.setForegroundColor(gRGB(0xbbbbbb));
serviceAvail = false;
//.........这里部分代码省略.........
示例10: itemregion
void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected)
{
gRegion itemregion(eRect(offset, m_itemsize));
eListboxStyle *local_style = 0;
eRect sel_clip(m_selection_clip);
bool cursorValid = this->cursorValid();
gRGB border_color;
int border_size = 0;
if (sel_clip.valid())
sel_clip.moveBy(offset);
/* get local listbox style, if present */
if (m_listbox)
{
local_style = m_listbox->getLocalStyle();
border_size = local_style->m_border_size;
border_color = local_style->m_border_color;
}
painter.clip(itemregion);
clearRegion(painter, style, local_style, ePyObject(), ePyObject(), ePyObject(), ePyObject(), selected, itemregion, sel_clip, offset, cursorValid);
ePyObject items, buildfunc_ret;
if (m_list && cursorValid)
{
/* a multicontent list can be used in two ways:
either each item is a list of (TYPE,...)-tuples,
or there is a template defined, which is a list of (TYPE,...)-tuples,
and the list is an unformatted tuple. The template then references items from the list.
*/
items = PyList_GET_ITEM(m_list, m_cursor); // borrowed reference!
if (m_buildFunc)
{
if (PyCallable_Check(m_buildFunc)) // when we have a buildFunc then call it
{
if (PyTuple_Check(items))
buildfunc_ret = items = PyObject_CallObject(m_buildFunc, items);
else
eDebug("[eListboxPythonMultiContent] items is no tuple");
}
else
eDebug("[eListboxPythonMultiContent] buildfunc is not callable");
}
if (!items)
{
eDebug("[eListboxPythonMultiContent] error getting item %d", m_cursor);
goto error_out;
}
if (!m_template)
{
if (!PyList_Check(items))
{
eDebug("[eListboxPythonMultiContent] list entry %d is not a list (non-templated)", m_cursor);
goto error_out;
}
} else
{
if (!PyTuple_Check(items))
{
eDebug("[eListboxPythonMultiContent] list entry %d is not a tuple (templated)", m_cursor);
goto error_out;
}
}
ePyObject data;
/* if we have a template, use the template for the actual formatting.
we will later detect that "data" is present, and refer to that, instead
of the immediate value. */
int start = 1;
if (m_template)
{
data = items;
items = m_template;
start = 0;
}
int size = PyList_Size(items);
for (int i = start; i < size; ++i)
{
ePyObject item = PyList_GET_ITEM(items, i); // borrowed reference!
if (!item)
{
eDebug("[eListboxPythonMultiContent] ?");
goto error_out;
}
if (!PyTuple_Check(item))
{
eDebug("[eListboxPythonMultiContent] did not receive a tuple.");
goto error_out;
}
int size = PyTuple_Size(item);
//.........这里部分代码省略.........
示例11: itemrect
void eListboxPythonConfigContent::paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected)
{
ePtr<gFont> fnt;
ePtr<gFont> fnt2;
eRect itemrect(offset, m_itemsize);
eListboxStyle *local_style = 0;
bool cursorValid = this->cursorValid();
gRGB border_color;
int border_size = 0;
painter.clip(itemrect);
style.setStyle(painter, selected ? eWindowStyle::styleListboxSelected : eWindowStyle::styleListboxNormal);
/* get local listbox style, if present */
if (m_listbox)
local_style = m_listbox->getLocalStyle();
if (local_style)
{
border_size = local_style->m_border_size;
border_color = local_style->m_border_color;
fnt = local_style->m_font;
if (selected)
{
/* if we have a local background color set, use that. */
if (local_style->m_background_color_selected_set)
painter.setBackgroundColor(local_style->m_background_color_selected);
/* same for foreground */
if (local_style->m_foreground_color_selected_set)
painter.setForegroundColor(local_style->m_foreground_color_selected);
}
else
{
/* if we have a local background color set, use that. */
if (local_style->m_background_color_set)
painter.setBackgroundColor(local_style->m_background_color);
/* same for foreground */
if (local_style->m_foreground_color_set)
painter.setForegroundColor(local_style->m_foreground_color);
}
}
if (fnt)
{
fnt2 = new gFont(fnt->family, fnt->pointSize - fnt->pointSize/5);
}
else
{
fnt = new gFont("Regular", 20);
fnt2 = new gFont("Regular", 16);
}
if (!local_style || !local_style->m_transparent_background)
/* if we have no transparent background */
{
/* blit background picture, if available (otherwise, clear only) */
if (local_style && local_style->m_background && cursorValid)
painter.blit(local_style->m_background, offset, eRect(), 0);
else
painter.clear();
} else
{
if (local_style->m_background && cursorValid)
painter.blit(local_style->m_background, offset, eRect(), gPainter::BT_ALPHATEST);
else if (selected && !local_style->m_selection)
painter.clear();
}
if (m_list && cursorValid)
{
/* get current list item */
ePyObject item = PyList_GET_ITEM(m_list, m_cursor); // borrowed reference!
ePyObject text, value;
painter.setFont(fnt);
int valueWidth(0);
if (selected && local_style && local_style->m_selection)
painter.blit(local_style->m_selection, offset, eRect(), gPainter::BT_ALPHATEST);
/* the first tuple element is a string for the left side.
the second one will be called, and the result shall be an tuple.
of this tuple,
the first one is the type (string).
the second one is the value. */
if (PyTuple_Check(item))
{
/* handle left part. get item from tuple, convert to string, display. */
text = PyTuple_GET_ITEM(item, 0);
text = PyObject_Str(text); /* creates a new object - old object was borrowed! */
const char *configitemstring = (text && PyString_Check(text)) ? PyString_AsString(text) : "<not-a-string>";
Py_XDECREF(text);
eSize itemsize = eSize(m_itemsize.width()-10, m_itemsize.height());
ePoint textoffset = ePoint(offset.x()+5, offset.y());
/* when we have no label, align value to the left. (FIXME:
don't we want to specifiy this individually?) */
int value_alignment_left = !*configitemstring;
/* now, handle the value. get 2nd part from tuple*/
//.........这里部分代码省略.........
示例12: cursorValid
void eListboxPythonStringContent::paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected)
{
ePtr<gFont> fnt;
painter.clip(eRect(offset, m_itemsize));
style.setStyle(painter, selected ? eWindowStyle::styleListboxSelected : eWindowStyle::styleListboxNormal);
bool validitem = (m_list && cursorValid());
eListboxStyle *local_style = 0;
bool cursorValid = this->cursorValid();
gRGB border_color;
int border_size = 0;
/* get local listbox style, if present */
if (m_listbox)
local_style = m_listbox->getLocalStyle();
if (local_style)
{
border_size = local_style->m_border_size;
border_color = local_style->m_border_color;
fnt = local_style->m_font;
if (selected)
{
/* if we have a local background color set, use that. */
if (local_style->m_background_color_selected_set)
painter.setBackgroundColor(local_style->m_background_color_selected);
/* same for foreground */
if (local_style->m_foreground_color_selected_set)
painter.setForegroundColor(local_style->m_foreground_color_selected);
}
else
{
/* if we have a local background color set, use that. */
if (local_style->m_background_color_set)
painter.setBackgroundColor(local_style->m_background_color);
/* same for foreground */
if (local_style->m_foreground_color_set)
painter.setForegroundColor(local_style->m_foreground_color);
}
}
if (!fnt) fnt = new gFont("Regular", 20);
/* if we have no transparent background */
if (!local_style || !local_style->m_transparent_background)
{
/* blit background picture, if available (otherwise, clear only) */
if (local_style && local_style->m_background && cursorValid)
{
if (validitem) painter.blit(local_style->m_background, offset, eRect(), 0);
}
else
painter.clear();
} else
{
if (local_style->m_background && cursorValid)
{
if (validitem) painter.blit(local_style->m_background, offset, eRect(), gPainter::BT_ALPHATEST);
}
else if (selected && !local_style->m_selection)
painter.clear();
}
if (validitem)
{
int gray = 0;
ePyObject item = PyList_GET_ITEM(m_list, m_cursor); // borrowed reference!
painter.setFont(fnt);
/* the user can supply tuples, in this case the first one will be displayed. */
if (PyTuple_Check(item))
{
if (PyTuple_Size(item) == 1)
gray = 1;
item = PyTuple_GET_ITEM(item, 0);
}
if (selected && local_style && local_style->m_selection)
painter.blit(local_style->m_selection, offset, eRect(), gPainter::BT_ALPHATEST);
if (item == Py_None)
{
/* seperator */
int half_height = m_itemsize.height() / 2;
painter.fill(eRect(offset.x() + half_height, offset.y() + half_height - 2, m_itemsize.width() - m_itemsize.height(), 4));
} else
{
const char *string = PyString_Check(item) ? PyString_AsString(item) : "<not-a-string>";
ePoint text_offset = offset;
if (gray)
painter.setForegroundColor(gRGB(0x808080));
int flags = 0;
if (local_style)
{
text_offset += local_style->m_text_offset;
if (local_style->m_valign == eListboxStyle::alignTop)
flags |= gPainter::RT_VALIGN_TOP;
else if (local_style->m_valign == eListboxStyle::alignCenter)
flags |= gPainter::RT_VALIGN_CENTER;
else if (local_style->m_valign == eListboxStyle::alignBottom)
//.........这里部分代码省略.........
示例13: if
void eListboxServiceContent::paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected)
{
painter.clip(eRect(offset, m_itemsize));
int marked = 0;
if (m_current_marked && selected)
marked = 2;
else if (cursorValid() && isMarked(*m_cursor))
{
if (selected)
marked = 2;
else
marked = 1;
}
else
style.setStyle(painter, selected ? eWindowStyle::styleListboxSelected : eWindowStyle::styleListboxNormal);
eListboxStyle *local_style = 0;
/* get local listbox style, if present */
if (m_listbox)
local_style = m_listbox->getLocalStyle();
if (marked == 1) // marked
{
style.setStyle(painter, eWindowStyle::styleListboxMarked);
if (m_color_set[markedForeground])
painter.setForegroundColor(m_color[markedForeground]);
if (m_color_set[markedBackground])
painter.setBackgroundColor(m_color[markedBackground]);
}
else if (marked == 2) // marked and selected
{
style.setStyle(painter, eWindowStyle::styleListboxMarkedAndSelected);
if (m_color_set[markedForegroundSelected])
painter.setForegroundColor(m_color[markedForegroundSelected]);
if (m_color_set[markedBackgroundSelected])
painter.setBackgroundColor(m_color[markedBackgroundSelected]);
}
else if (local_style)
{
if (selected)
{
/* if we have a local background color set, use that. */
if (local_style->m_background_color_selected_set)
painter.setBackgroundColor(local_style->m_background_color_selected);
/* same for foreground */
if (local_style->m_foreground_color_selected_set)
painter.setForegroundColor(local_style->m_foreground_color_selected);
}
else
{
/* if we have a local background color set, use that. */
if (local_style->m_background_color_set)
painter.setBackgroundColor(local_style->m_background_color);
/* same for foreground */
if (local_style->m_foreground_color_set)
painter.setForegroundColor(local_style->m_foreground_color);
}
}
if (!local_style || !local_style->m_transparent_background)
/* if we have no transparent background */
{
/* blit background picture, if available (otherwise, clear only) */
if (local_style && local_style->m_background)
painter.blit(local_style->m_background, offset, eRect(), 0);
else
painter.clear();
} else
{
if (local_style->m_background)
painter.blit(local_style->m_background, offset, eRect(), gPainter::BT_ALPHATEST);
else if (selected && !local_style->m_selection)
painter.clear();
}
if (cursorValid())
{
/* get service information */
ePtr<iStaticServiceInformation> service_info;
m_service_center->info(*m_cursor, service_info);
eServiceReference ref = *m_cursor;
bool isMarker = ref.flags & eServiceReference::isMarker;
bool isPlayable = !(ref.flags & eServiceReference::isDirectory || isMarker);
ePtr<eServiceEvent> evt;
bool serviceAvail = true;
if (!marked && isPlayable && service_info && m_is_playable_ignore.valid() && !service_info->isPlayable(*m_cursor, m_is_playable_ignore))
{
if (m_color_set[serviceNotAvail])
painter.setForegroundColor(m_color[serviceNotAvail]);
else
painter.setForegroundColor(gRGB(0xbbbbbb));
serviceAvail = false;
}
if (selected && local_style && local_style->m_selection)
//.........这里部分代码省略.........