X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fgdi%2Fgrc.cpp;h=643e144507145747fe70305665f76d2af084fede;hp=dff6b059a0f9351ac80f9420b6aa8027721f67b4;hb=74f5884fdc5a23465cf40c27b5c069ff7d882746;hpb=a37ddbb7785de5f1d944f4937a5b2914ce6a3862 diff --git a/lib/gdi/grc.cpp b/lib/gdi/grc.cpp index dff6b05..643e144 100644 --- a/lib/gdi/grc.cpp +++ b/lib/gdi/grc.cpp @@ -3,6 +3,9 @@ #include #include #include +#ifdef USE_LIBVUGLES2 +#include +#endif #ifndef SYNC_PAINT void *gRC::thread_wrapper(void *ptr) @@ -94,6 +97,12 @@ void gRC::submit(const gOpcode &o) void *gRC::thread() { int need_notify = 0; +#ifdef USE_LIBVUGLES2 + if (gles_open()) { + gles_state_open(); + gles_viewport(720, 576, 720 * 4); + } +#endif #ifndef SYNC_PAINT while (1) { @@ -185,6 +194,10 @@ void *gRC::thread() #endif } } +#ifdef USE_LIBVUGLES2 + gles_state_close(); + gles_close(); +#endif #ifndef SYNC_PAINT pthread_exit(0); #endif @@ -318,7 +331,7 @@ void gPainter::setFont(gFont *font) m_rc->submit(o); } -void gPainter::renderText(const eRect &pos, const std::string &string, int flags) +void gPainter::renderText(const eRect &pos, const std::string &string, int flags, gRGB bordercolor, int border) { if ( m_dc->islocked() ) return; @@ -329,6 +342,8 @@ void gPainter::renderText(const eRect &pos, const std::string &string, int flags o.parm.renderText->area = pos; o.parm.renderText->text = string.empty()?0:strdup(string.c_str()); o.parm.renderText->flags = flags; + o.parm.renderText->border = border; + o.parm.renderText->bordercolor = bordercolor; m_rc->submit(o); } @@ -594,6 +609,72 @@ void gPainter::end() return; } +void gPainter::sendShow(ePoint point, eSize size) +{ + if ( m_dc->islocked() ) + return; + gOpcode o; + o.opcode=gOpcode::sendShow; + o.dc = m_dc.grabRef(); + o.parm.setShowHideInfo = new gOpcode::para::psetShowHideInfo; + o.parm.setShowHideInfo->point = point; + o.parm.setShowHideInfo->size = size; + m_rc->submit(o); +} + +void gPainter::sendHide(ePoint point, eSize size) +{ + if ( m_dc->islocked() ) + return; + gOpcode o; + o.opcode=gOpcode::sendHide; + o.dc = m_dc.grabRef(); + o.parm.setShowHideInfo = new gOpcode::para::psetShowHideInfo; + o.parm.setShowHideInfo->point = point; + o.parm.setShowHideInfo->size = size; + m_rc->submit(o); +} + +#ifdef USE_LIBVUGLES2 +void gPainter::sendShowItem(long dir, ePoint point, eSize size) +{ + if ( m_dc->islocked() ) + return; + gOpcode o; + o.opcode=gOpcode::sendShowItem; + o.dc = m_dc.grabRef(); + o.parm.setShowItemInfo = new gOpcode::para::psetShowItemInfo; + o.parm.setShowItemInfo->dir = dir; + o.parm.setShowItemInfo->point = point; + o.parm.setShowItemInfo->size = size; + m_rc->submit(o); +} + +void gPainter::setFlush(bool val) +{ + if ( m_dc->islocked() ) + return; + gOpcode o; + o.opcode=gOpcode::setFlush; + o.dc = m_dc.grabRef(); + o.parm.setFlush = new gOpcode::para::psetFlush; + o.parm.setFlush->enable = val; + m_rc->submit(o); +} + +void gPainter::setView(eSize size) +{ + if ( m_dc->islocked() ) + return; + gOpcode o; + o.opcode=gOpcode::setView; + o.dc = m_dc.grabRef(); + o.parm.setViewInfo = new gOpcode::para::psetViewInfo; + o.parm.setViewInfo->size = size; + m_rc->submit(o); +} +#endif + gDC::gDC() { m_spinner_pic = 0; @@ -609,7 +690,7 @@ gDC::~gDC() delete[] m_spinner_pic; } -void gDC::exec(gOpcode *o) +void gDC::exec(const gOpcode *o) { switch (o->opcode) { @@ -646,7 +727,7 @@ void gDC::exec(gOpcode *o) int flags = o->parm.renderText->flags; ASSERT(m_current_font); para->setFont(m_current_font); - para->renderString(o->parm.renderText->text, (flags & gPainter::RT_WRAP) ? RS_WRAP : 0); + para->renderString(o->parm.renderText->text, (flags & gPainter::RT_WRAP) ? RS_WRAP : 0, o->parm.renderText->border); if (o->parm.renderText->text) free(o->parm.renderText->text); if (flags & gPainter::RT_HALIGN_RIGHT) @@ -665,8 +746,14 @@ void gDC::exec(gOpcode *o) int correction = vcentered_top - bbox.top(); offset += ePoint(0, correction); } - - para->blit(*this, offset, m_background_color_rgb, m_foreground_color_rgb); + + if (o->parm.renderText->border) + { + para->blit(*this, offset, m_background_color_rgb, o->parm.renderText->bordercolor, true); + para->blit(*this, offset, o->parm.renderText->bordercolor, m_foreground_color_rgb); + } + else + para->blit(*this, offset, m_background_color_rgb, m_foreground_color_rgb); delete o->parm.renderText; break; } @@ -781,6 +868,18 @@ void gDC::exec(gOpcode *o) break; case gOpcode::flush: break; + case gOpcode::sendShow: + break; + case gOpcode::sendHide: + break; +#ifdef USE_LIBVUGLES2 + case gOpcode::sendShowItem: + break; + case gOpcode::setFlush: + break; + case gOpcode::setView: + break; +#endif case gOpcode::enableSpinner: enableSpinner(); break;