From: Felix Domke Date: Mon, 28 May 2007 19:14:58 +0000 (+0000) Subject: use Nemesis' gearwheel as spinner X-Git-Tag: 2.6.0~2212 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/a5beb7286bff0260e74299fe16cbe1c86de90c76 use Nemesis' gearwheel as spinner --- diff --git a/data/wait1.png b/data/wait1.png new file mode 100755 index 00000000..506208e5 Binary files /dev/null and b/data/wait1.png differ diff --git a/data/wait2.png b/data/wait2.png new file mode 100755 index 00000000..c41ee527 Binary files /dev/null and b/data/wait2.png differ diff --git a/data/wait3.png b/data/wait3.png new file mode 100755 index 00000000..952f8dbf Binary files /dev/null and b/data/wait3.png differ diff --git a/data/wait4.png b/data/wait4.png new file mode 100755 index 00000000..ea48620f Binary files /dev/null and b/data/wait4.png differ diff --git a/lib/gdi/grc.cpp b/lib/gdi/grc.cpp index e5cab87e..1c8e3a65 100644 --- a/lib/gdi/grc.cpp +++ b/lib/gdi/grc.cpp @@ -572,14 +572,17 @@ void gPainter::end() gDC::gDC() { + m_spinner_pic = 0; } gDC::gDC(gPixmap *pixmap): m_pixmap(pixmap) { + m_spinner_pic = 0; } gDC::~gDC() { + delete[] m_spinner_pic; } void gDC::exec(gOpcode *o) @@ -804,7 +807,8 @@ void gDC::incrementSpinner() static int blub; blub++; - + +#if 0 int i; for (i = 0; i < 5; ++i) @@ -816,14 +820,37 @@ void gDC::incrementSpinner() m_pixmap->fill(eRect(x, y, 10, 10), gRGB(col, col, col)); } +#endif + + m_spinner_temp->blit(*m_spinner_saved, ePoint(0, 0), eRect(ePoint(0, 0), m_spinner_pos.size())); + + if (m_spinner_pic[m_spinner_i]) + m_spinner_temp->blit(*m_spinner_pic[m_spinner_i], ePoint(0, 0), eRect(ePoint(0, 0), m_spinner_pos.size()), gPixmap::blitAlphaTest); + + m_pixmap->blit(*m_spinner_temp, m_spinner_pos.topLeft(), gRegion(m_spinner_pos), 0); + m_spinner_i++; + m_spinner_i %= m_spinner_num; } -void gDC::setSpinner(eRect pos) +void gDC::setSpinner(eRect pos, ePtr *pic, int len) { ASSERT(m_pixmap); ASSERT(m_pixmap->surface); m_spinner_saved = new gPixmap(pos.size(), m_pixmap->surface->bpp); + m_spinner_temp = new gPixmap(pos.size(), m_pixmap->surface->bpp); m_spinner_pos = pos; + + m_spinner_i = 0; + m_spinner_num = len; + + int i; + if (m_spinner_pic) + delete[] m_spinner_pic; + + m_spinner_pic = new ePtr[len]; + + for (i = 0; i < len; ++i) + m_spinner_pic[i] = pic[i]; } DEFINE_REF(gDC); diff --git a/lib/gdi/grc.h b/lib/gdi/grc.h index adc1d3be..555f2ffb 100644 --- a/lib/gdi/grc.h +++ b/lib/gdi/grc.h @@ -270,9 +270,10 @@ protected: std::stack m_clip_stack; gRegion m_current_clip; - ePtr m_spinner_saved; + ePtr m_spinner_saved, m_spinner_temp; + ePtr *m_spinner_pic; eRect m_spinner_pos; - + int m_spinner_num, m_spinner_i; public: virtual void exec(gOpcode *opcode); gDC(gPixmap *pixmap); @@ -287,7 +288,7 @@ public: void enableSpinner(); void disableSpinner(); void incrementSpinner(); - void setSpinner(eRect pos); + void setSpinner(eRect pos, ePtr *pic, int len); }; #endif diff --git a/main/enigma.cpp b/main/enigma.cpp index 45c0c7b3..eb0a1845 100644 --- a/main/enigma.cpp +++ b/main/enigma.cpp @@ -155,7 +155,6 @@ int main(int argc, char **argv) eTextPara::forceReplacementGlyph(0xfdf2); for (int i = 0xfe80; i < 0xff00; ++i) eTextPara::forceReplacementGlyph(i); - eWidgetDesktop dsk(eSize(720, 576)); eWidgetDesktop dsk_lcd(eSize(132, 64)); @@ -190,7 +189,25 @@ int main(int argc, char **argv) dsk.setRedrawTask(main); dsk_lcd.setRedrawTask(main); - my_dc->setSpinner(eRect(100, 100, 120, 40)); + + eDebug("Loading spinners..."); + + { + int i; + ePtr wait[4]; + for (i=0; i<4; ++i) + { + char filename[strlen(DATADIR) + 20]; + sprintf(filename, DATADIR "/enigma2/wait%d.png", i + 1); + if (loadPNG(wait[i], filename)) + { + eDebug("failed to load %s! (%m)", filename); + continue; + } + } + my_dc->setSpinner(eRect(100, 100, 105, 105), wait, 4); + } + gRC::getInstance()->setSpinnerDC(my_dc); eRCInput::getInstance()->keyEvent.connect(slot(keyEvent));