#include <lib/gdi/font.h>
#include <lib/base/init.h>
#include <lib/base/init_num.h>
+#ifdef USE_LIBVUGLES2
+#include <vuplus_gles.h>
+#endif
#ifndef SYNC_PAINT
void *gRC::thread_wrapper(void *ptr)
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)
{
#endif
}
}
+#ifdef USE_LIBVUGLES2
+ gles_state_close();
+ gles_close();
+#endif
#ifndef SYNC_PAINT
pthread_exit(0);
#endif
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;
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);
}
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;
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)
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;
}
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;