aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2007-05-28 19:14:58 +0000
committerFelix Domke <tmbinc@elitedvb.net>2007-05-28 19:14:58 +0000
commita5beb7286bff0260e74299fe16cbe1c86de90c76 (patch)
tree155e26fafe7173c8fdb49fac38ff61707eb50a8c
parent49990dc5d536344c2a5793d0d21cb2880e5c5247 (diff)
downloadenigma2-a5beb7286bff0260e74299fe16cbe1c86de90c76.tar.gz
enigma2-a5beb7286bff0260e74299fe16cbe1c86de90c76.zip
use Nemesis' gearwheel as spinner
-rwxr-xr-xdata/wait1.pngbin0 -> 4855 bytes
-rwxr-xr-xdata/wait2.pngbin0 -> 4868 bytes
-rwxr-xr-xdata/wait3.pngbin0 -> 4912 bytes
-rwxr-xr-xdata/wait4.pngbin0 -> 4817 bytes
-rw-r--r--lib/gdi/grc.cpp31
-rw-r--r--lib/gdi/grc.h7
-rw-r--r--main/enigma.cpp21
7 files changed, 52 insertions, 7 deletions
diff --git a/data/wait1.png b/data/wait1.png
new file mode 100755
index 00000000..506208e5
--- /dev/null
+++ b/data/wait1.png
Binary files differ
diff --git a/data/wait2.png b/data/wait2.png
new file mode 100755
index 00000000..c41ee527
--- /dev/null
+++ b/data/wait2.png
Binary files differ
diff --git a/data/wait3.png b/data/wait3.png
new file mode 100755
index 00000000..952f8dbf
--- /dev/null
+++ b/data/wait3.png
Binary files differ
diff --git a/data/wait4.png b/data/wait4.png
new file mode 100755
index 00000000..ea48620f
--- /dev/null
+++ b/data/wait4.png
Binary files 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<gPixmap> *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<gPixmap>[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<gRegion> m_clip_stack;
gRegion m_current_clip;
- ePtr<gPixmap> m_spinner_saved;
+ ePtr<gPixmap> m_spinner_saved, m_spinner_temp;
+ ePtr<gPixmap> *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<gPixmap> *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<gPixmap> 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));