From: Felix Domke Date: Tue, 20 Jul 2004 00:06:38 +0000 (+0000) Subject: add playlist and gdi testbench X-Git-Tag: 2.6.0~5956 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/70b451b323d094329a5cb8c9022a30a3af67f11c add playlist and gdi testbench --- diff --git a/main/enigma-gdi.cpp b/main/enigma-gdi.cpp new file mode 100644 index 00000000..d0010adf --- /dev/null +++ b/main/enigma-gdi.cpp @@ -0,0 +1,111 @@ +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include +#include +#include + +#ifdef OBJECT_DEBUG +int object_total_remaining; + +void object_dump() +{ + printf("%d items left\n", object_total_remaining); +} +#endif + +void dumpRegion(const gRegion ®ion) +{ + fprintf(stderr, "extends: %d %d -> %d %d\n", + region.extends.left(), region.extends.top(), + region.extends.right(), region.extends.bottom()); + for (int y=0; y my_dc; + gFBDC::getInstance(my_dc); +#if 1 + + gPainter p(my_dc); + + gRGB pal[256]; + pal[0] = 0; + pal[1] = 0xff00ff; + pal[2] = 0xffFFff; + pal[3] = 0x00ff00; + + for (int a=0; a<0x10; ++a) + pal[a | 0x10] = (0x111111 * a) | 0xFF; + p.setPalette(pal, 0, 256); + + fontRenderClass::getInstance()->AddFont("/dbox2/cdkroot/share/fonts/arial.ttf", "Arial", 100); + + p.resetClip(gRegion(eRect(0, 0, 720, 576))); + + + gRegion c; + eDebug("0"); + int i; + + c |= eRect(0, 20, 100, 10); + c |= eRect(0, 50, 100, 10); + c |= eRect(10, 10, 80, 100); + + c -= eRect(20, 20, 40, 40); + + p.setForegroundColor(gColor(3)); + p.fill(eRect(0, 0, 100, 100)); + p.fill(eRect(200, 0, 100, 100)); + + for (int a=0; a %d %d", c.rects[a].left(), c.rects[a].top(), c.rects[a].right(), c.rects[a].bottom()); + eDebug("extends: %d %d %d %d", c.extends.left(), c.extends.top(), c.extends.right(), c.extends.bottom()); + p.setOffset(ePoint(100, 100)); + p.clip(c); + + p.setBackgroundColor(gColor(1)); + p.clear(); + p.setForegroundColor(gColor(2)); + p.line(ePoint(0, 0), ePoint(220, 190)); + p.clippop(); + + p.setBackgroundColor(gColor(0x1f)); + p.setForegroundColor(gColor(0x10)); + + ePtr fnt = new gFont("Arial", 70); + p.setFont(fnt); + p.renderText(eRect(100, 100, 500, 200), "Hello welt!"); + + sleep(1); + return 0; +} diff --git a/main/enigma-playlist.cpp b/main/enigma-playlist.cpp new file mode 100644 index 00000000..43dcb1d9 --- /dev/null +++ b/main/enigma-playlist.cpp @@ -0,0 +1,158 @@ +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +class eMain: public eApplication, public Object +{ + eInit init; + + ePtr m_mgr; + ePtr m_channel; + ePtr m_dvbdb; + + ePtr m_playservice; + ePtr m_nav; + ePtr m_conn_event; + ePtr m_serviceInformation; +public: + eMain() + { + init.setRunlevel(eAutoInitNumbers::main); + m_dvbdb = new eDVBDB(); + m_mgr = new eDVBResourceManager(); + m_mgr->setChannelList(m_dvbdb); + + ePtr service_center; + eServiceCenter::getInstance(service_center); + + assert(service_center); + m_nav = new eNavigation(service_center); +#if 0 + if (service_center) + { + eServiceReference ref("2:0:1:0:0:0:0:0:0:0:/"); + ePtr lst; + if (service_center->list(ref, lst)) + eDebug("no list available!"); + else + { + std::list list; + if (lst->getContent(list)) + eDebug("list itself SUCKED AROUND!!!"); + else + for (std::list::const_iterator i(list.begin()); + i != list.end(); ++i) + eDebug("%s", i->toString().c_str()); + } + } +#endif + m_nav->connectEvent(slot(*this, &eMain::event), m_conn_event); + +// eServiceReference ref("1:0:1:6de2:44d:1:c00000:0:0:0:"); + eServiceReference ref("4097:47:0:0:0:0:0:0:0:0:/sine_60s_100.mp3"); + eServiceReference ref1("4097:47:0:0:0:0:0:0:0:0:/sine_60s_100.mp31"); + eServiceReference ref2("4097:47:0:0:0:0:0:0:0:0:/sine_60s_100.mp32"); + + if (m_nav->enqueueService(ref)) + eDebug("play sucked around!"); + else + eDebug("play r00lz!"); + + m_nav->enqueueService(ref1); + m_nav->enqueueService(ref2); + m_nav->enqueueService(ref1); + } + + void event(eNavigation *nav, int ev) + { + assert(nav); + + ePtr playlist; + nav->getPlaylist(playlist); + if (playlist) + { + eDebug("PLAYLIST:"); + ePlaylist::iterator i; + for (i=playlist->begin(); i != playlist->end(); ++i) + eDebug("%s %s", i == playlist->m_current ? "-->" : " ", i->toString().c_str()); + } + + switch (ev) + { + case eNavigation::evStopService: + /* very important: the old service should be deallocated, so clear *all* references to it */ + m_serviceInformation = 0; + eDebug("STOP service!"); + break; + case eNavigation::evNewService: + { + ePtr service; + nav->getCurrentService(service); + if (!service) + { + eDebug("no running service!"); + break; + } + if (service->getIServiceInformation(m_serviceInformation)) + { + eDebug("failed to get iserviceinformation"); + break; + } + eString name; + m_serviceInformation->getName(name); + eDebug("NEW running service: %s", name.c_str()); + break; + } + case eNavigation::evPlayFailed: + eDebug("play failed!"); + break; + case eNavigation::evPlaylistDone: + eDebug("playlist done"); + quit(); + break; + default: + eDebug("Navigation event %d", ev); + break; + } + } + + ~eMain() + { + } +}; + +#ifdef OBJECT_DEBUG +int object_total_remaining; + +void object_dump() +{ + printf("%d items left\n", object_total_remaining); +} +#endif + +int main() +{ +#ifdef OBJECT_DEBUG + atexit(object_dump); +#endif + + eMain app; + int res = app.exec(); + eDebug("after exec"); + return res; +} +