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)
static int blub;
blub++;
-
+
+#if 0
int i;
for (i = 0; i < 5; ++i)
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);
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);
void enableSpinner();
void disableSpinner();
void incrementSpinner();
- void setSpinner(eRect pos);
+ void setSpinner(eRect pos, ePtr<gPixmap> *pic, int len);
};
#endif
eTextPara::forceReplacementGlyph(0xfdf2);
for (int i = 0xfe80; i < 0xff00; ++i)
eTextPara::forceReplacementGlyph(i);
-
eWidgetDesktop dsk(eSize(720, 576));
eWidgetDesktop dsk_lcd(eSize(132, 64));
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));