void renderSelection() { g15macro_log("Redrawing only selection box.\n"); //Clear only the selection box, since that's the only thing updated g15r_pixelBox(canvas,0,15,G15_LCD_WIDTH-38,G15_LCD_HEIGHT,G15_COLOR_WHITE,0,1); // Draw selection list renderSelectionList(); }
// Draws a vertical bar growing up // MODULE_EXPORT void g15_vbar(Driver *drvthis, int x, int y, int len, int promille, int options) { PrivateData *p = drvthis->private_data; x--; int total_pixels = ((long) 2 * len * p->cellwidth + 1) * promille / 2000; int px1 = x * p->cellwidth; int py1 = y * p->cellheight - total_pixels; int px2 = px1 + (p->cellwidth - 2); int py2 = py1 + total_pixels; g15r_pixelBox(p->canvas, px1, py1, px2, py2, G15_COLOR_BLACK, 1, G15_PIXEL_FILL); }
/* take the track_info structure and render it */ void *g15display_thread(){ long chksum=0; static long last_chksum; int i; unsigned char time_elapsed[41]; unsigned char time_total[41]; static int current = 0; int changed =0; while(!leaving){ if(playlist_mode){ int y=0; int offset=2; changed = 0; if(track_info.currentsong>-1){ current=track_info.currentsong; track_info.currentsong = -1; changed = 1; } if(playlist_selection>0){ if(current+1<mpd_playlist_get_playlist_length(obj)){ current+=playlist_selection; changed = 1; } playlist_selection=0; } if(playlist_selection<0){ if(current) { current--; changed = 1; } playlist_selection=0; } if(current-offset<0) offset-=current; if(changed){ g15r_pixelBox (canvas, 0, 0, 159, 42, G15_COLOR_WHITE, 1, 1); for(i=current-offset;i<current+6;i++){ char title[100]; mpd_Song *song; song = mpd_playlist_get_song_from_pos(obj, i); if(song) { if(song->title!=NULL) strncpy(title,song->title,99); else strncpy(title,"",99); if(song->artist!=NULL){ strncat(title," - ",99); strncat(title,song->artist,99); } } /* sanitise the display */ if(i==mpd_playlist_get_playlist_length(obj)) strncpy(title,"End of PlayList",99); if(i>mpd_playlist_get_playlist_length(obj)) break; if(i<0) strncpy(title,"",99); if(y==offset){ g15r_pixelBox (canvas, 0, 7*offset, 159 , 7*(offset+1), G15_COLOR_BLACK, 1, 1); canvas->mode_xor=1; if(song) if(song->id) item_selected=song->id; } g15r_renderString (canvas, (unsigned char *)title, y, G15_TEXT_MED, 1, 1); canvas->mode_xor=0; y++; } } }else{ /* track info */ g15r_pixelBox (canvas, 0, 0, 159, 42, G15_COLOR_WHITE, 1, 1); g15r_renderString (canvas, (unsigned char *)track_info.artist, 0, G15_TEXT_LARGE, 80-(strlen(track_info.artist)*8)/2, 2); g15r_renderString (canvas, (unsigned char *)track_info.title, 0, G15_TEXT_MED, 80-(strlen(track_info.title)*5)/2, 12); /* elapsed time */ memset(time_elapsed,0,41); memset(time_total,0,41); if (track_info.total != 0) { snprintf((char*)time_elapsed,40,"%02i:%02i",track_info.elapsed/60, track_info.elapsed%60); snprintf((char*)time_total,40,"%02i:%02i",track_info.total/60, track_info.total%60); } if(track_info.elapsed>0&&track_info.total>0) g15r_drawBar (canvas, 10, 22, 149, 30, G15_COLOR_BLACK, track_info.elapsed, track_info.total, 1); canvas->mode_xor=1; g15r_renderString (canvas,(unsigned char*)time_elapsed,0,G15_TEXT_MED,12,23); g15r_renderString (canvas,(unsigned char*)time_total,0,G15_TEXT_MED,124,23); canvas->mode_xor=0; switch(track_info.playstate) { case MPD_PLAYER_PLAY: playing=1; paused=0; break; case MPD_PLAYER_PAUSE: g15r_pixelBox (canvas, 10, 22, 149, 30, G15_COLOR_WHITE, 1, 1); g15r_renderString (canvas, (unsigned char *)"Playback Paused", 0, G15_TEXT_LARGE, 22, 23); paused=1; break; case MPD_PLAYER_STOP: g15r_pixelBox (canvas, 10, 22, 149, 30, G15_COLOR_WHITE, 1, 1); g15r_renderString (canvas, (unsigned char *)"Playback Stopped", 0, G15_TEXT_LARGE, 18, 23); playing=0; paused=0; break; default: break; } g15r_pixelBox (canvas, 1, 34, 158 , 41, G15_COLOR_WHITE, 1, 1); g15r_pixelBox (canvas, 10, 34, 27, 42, G15_COLOR_BLACK, 1, 1); canvas->mode_xor=1; g15r_renderString (canvas, (unsigned char *)"mode", 0, G15_TEXT_SMALL, 11, 36); canvas->mode_xor=0; if(menulevel==MENU_MODE1){ if(track_info.random){ g15r_drawLine (canvas, 43, 42, 158, 42,G15_COLOR_WHITE); canvas->mode_xor=1; g15r_pixelBox (canvas, 104, 34, 125 , 42, G15_COLOR_BLACK, 1, 1); }else{ g15r_pixelBox (canvas, 104, 34, 125 , 42, G15_COLOR_BLACK, 1, 0); } g15r_renderString (canvas, (unsigned char *)"Rndm", 0, G15_TEXT_SMALL, 108, 36); canvas->mode_xor=0; if(track_info.repeat){ canvas->mode_xor=1; g15r_pixelBox (canvas, 130, 34, 149 , 42, G15_COLOR_BLACK, 1, 1); }else { g15r_pixelBox (canvas, 130, 34, 149 , 42, G15_COLOR_BLACK, 1, 0); } g15r_renderString (canvas, (unsigned char *)"Rpt", 0, G15_TEXT_SMALL, 136, 36); canvas->mode_xor=0; // 2nd box from left - if you want it... if(playlist_mode==0){ g15r_pixelBox (canvas, 34, 34, 70 , 42, G15_COLOR_BLACK, 1, 0); g15r_renderString (canvas, (unsigned char *)"Playlist", 0, G15_TEXT_SMALL, 36, 36); }else{ canvas->mode_xor=1; g15r_pixelBox (canvas, 34, 34, 70 , 42, G15_COLOR_BLACK, 1, 1); g15r_renderString (canvas, (unsigned char *)"Playlist", 0, G15_TEXT_SMALL, 36, 36); canvas->mode_xor=0; } } if(menulevel==MENU_MODE2){ g15r_pixelBox (canvas, 104, 34, 125 , 42, G15_COLOR_BLACK, 1, 0); g15r_renderString (canvas, (unsigned char *)"Vol-", 0, G15_TEXT_SMALL, 108, 36); g15r_pixelBox (canvas, 130, 34, 149 , 42, G15_COLOR_BLACK, 1, 0); g15r_renderString (canvas, (unsigned char *)"Vol+", 0, G15_TEXT_SMALL, 132, 36); // 2nd box from left - if you want it... //g15r_pixelBox (canvas, 34, 34, 54 , 42, G15_COLOR_BLACK, 1, 0); //g15r_renderString (canvas, (unsigned char *)"test", 0, G15_TEXT_SMALL, 36, 36); } if(muted_volume != 0){ g15r_renderString (canvas, (unsigned char *)"MUTE", 0, G15_TEXT_LARGE, 11, 2); } else if(voltimeout){ g15r_drawBar (canvas,10, 22, 149, 30, G15_COLOR_BLACK, track_info.volume, 100, 1); canvas->mode_xor=1; g15r_renderString (canvas, (unsigned char *)"Volume", 0, G15_TEXT_LARGE, 59, 23); canvas->mode_xor=0; } } /* do a quicky checksum - only send frame if different */ chksum=0; for(i=0;i<G15_BUFFER_LEN;i++){ chksum+=canvas->buffer[i]*i; } pthread_mutex_lock(&daemon_mutex); if(last_chksum!=chksum) { while(g15_send(g15screen_fd,(char *)canvas->buffer,G15_BUFFER_LEN)<0 && !leaving) { perror("lost connection, tryng again\n"); usleep(10000); /* connection error occurred - try to reconnect to the daemon */ g15screen_fd=new_g15_screen(G15_G15RBUF); } } pthread_mutex_unlock(&daemon_mutex); last_chksum=chksum; usleep(75*1000); if(playlist_mode) usleep(75*1000); } return NULL; }
void hardwareApplet::update() { g15r_clearScreen(canvas, 0); unsigned int keystate = 0; recv(fd, &keystate, 4, 0); if (keystate) { if (keystate & G15_KEY_L2) screen = 0; else if (keystate & G15_KEY_L3) screen = 1; else if (keystate & G15_KEY_L4) screen = 2; else if (keystate & G15_KEY_L5) screen = 3; } QFile file; if (screen == 0) { //CPU file.setFileName("/proc/stat"); file.open(QIODevice::ReadOnly); QStringList strcpu = QString(file.readLine()).split(QRegExp("\\s+")); file.close(); int cpu = strcpu.at(1).toInt() + strcpu.at(2).toInt() + strcpu.at(3).toInt() + strcpu.at(5).toInt(); float diffCpu = cpu - cpuOld; cpuOld = cpu; int idle = strcpu.at(4).toInt(); int diffIdle = idle - idleOld; idleOld = idle; int progressCpu = diffCpu/(diffCpu+diffIdle)*128; //MEM file.setFileName("/proc/meminfo"); file.open(QIODevice::ReadOnly); QStringList memL1 = QString(file.readLine()).split(QRegExp("\\s+")); QStringList memL2 = QString(file.readLine()).split(QRegExp("\\s+")); file.close(); int progressMem = (memL1.at(1).toInt()-memL2.at(1).toInt())/memL1.at(1).toFloat()*128; g15r_G15FPrint(canvas, (char *) " CPU", 0, 0, 1, G15_JUSTIFY_LEFT, G15_COLOR_BLACK, 1); g15r_pixelBox(canvas, 28, 7, 28+progressCpu, 12, G15_COLOR_BLACK, 1, G15_PIXEL_FILL); g15r_pixelBox(canvas, 28+progressCpu, 7, 156, 12, G15_COLOR_BLACK, 1, G15_PIXEL_NOFILL); g15r_G15FPrint(canvas, (char *) " MEM", 0, 0, 1, G15_JUSTIFY_LEFT, G15_COLOR_BLACK, 3); g15r_pixelBox(canvas, 28, 21, 28+progressMem, 26, G15_COLOR_BLACK, 1, G15_PIXEL_FILL); g15r_pixelBox(canvas, 28+progressMem, 21, 156, 26, G15_COLOR_BLACK, 1, G15_PIXEL_NOFILL); } //CPU else if (screen == 1) { file.setFileName("/proc/stat"); file.open(QIODevice::ReadOnly); QStringList strcpu = QString(file.readLine()).split(QRegExp("\\s+")); file.close(); int user = strcpu.at(1).toInt(); int nice = strcpu.at(2).toInt(); int sys = strcpu.at(3).toInt(); int idle = strcpu.at(4).toInt(); float diffUser = user - userOld; float diffNice = nice - niceOld; float diffSys = sys - sysOld; float diffIdle = idle - idleOld; float diffTotal = diffUser + diffNice + diffSys + diffIdle; userOld = user; niceOld = nice; sysOld = sys; idleOld = idle; QString progressUser = QString::number(std::floor(diffUser/diffTotal*10000)/100).append(" % "); QString progressNice = QString::number(std::floor(diffNice/diffTotal*10000)/100).append(" % "); QString progressSys = QString::number(std::floor(diffSys/diffTotal*10000)/100).append(" % "); QString progressCpu = QString::number(std::floor((diffUser + diffNice + diffSys)/diffTotal*10000)/100).append(" % "); g15r_G15FPrint(canvas, (char *) " User :"******" Nice :", 24, 4, 1, G15_JUSTIFY_LEFT, G15_COLOR_BLACK, 1); g15r_G15FPrint(canvas, (char *) "System :", 24, 4, 1, G15_JUSTIFY_LEFT, G15_COLOR_BLACK, 2); g15r_G15FPrint(canvas, (char *) " Total :", 24, 4, 1, G15_JUSTIFY_LEFT, G15_COLOR_BLACK, 3); g15r_G15FPrint(canvas, (char *) progressUser.toStdString().c_str(), 0, 4, 1, G15_JUSTIFY_RIGHT, G15_COLOR_BLACK, 0); g15r_G15FPrint(canvas, (char *) progressNice.toStdString().c_str(), 0, 4, 1, G15_JUSTIFY_RIGHT, G15_COLOR_BLACK, 1); g15r_G15FPrint(canvas, (char *) progressSys.toStdString().c_str(), 0, 4, 1, G15_JUSTIFY_RIGHT, G15_COLOR_BLACK, 2); g15r_G15FPrint(canvas, (char *) progressCpu.toStdString().c_str(), 0, 4, 1, G15_JUSTIFY_RIGHT, G15_COLOR_BLACK, 3); } //MEM else if (screen == 2) { file.setFileName("/proc/meminfo"); file.open(QIODevice::ReadOnly); float MemTotal = QString(file.readLine()).split(QRegExp("\\s+"))[1].toInt(); int MemFree = QString(file.readLine()).split(QRegExp("\\s+"))[1].toInt(); int Buffers = QString(file.readLine()).split(QRegExp("\\s+"))[1].toInt(); int Cached = QString(file.readLine()).split(QRegExp("\\s+"))[1].toInt(); file.close(); int progressTotal = 31 + (MemTotal-MemFree)/MemTotal*125; int progressUsr = 31 + (MemTotal-MemFree-Buffers-Cached)/MemTotal*125; int progressBuffers = progressUsr + Buffers/MemTotal*125; int progressCached = progressBuffers + Cached/MemTotal*125; g15r_G15FPrint(canvas, (char *) " TOTAL", 2, 2, 0, G15_JUSTIFY_LEFT, G15_COLOR_BLACK, 0); g15r_pixelBox(canvas, 31, 2, progressTotal, 6, G15_COLOR_BLACK, 1, G15_PIXEL_FILL); g15r_pixelBox(canvas, progressTotal, 2, 156, 6, G15_COLOR_BLACK, 1, G15_PIXEL_NOFILL); g15r_G15FPrint(canvas, (char *) " USER", 4, 4, 0, G15_JUSTIFY_LEFT, G15_COLOR_BLACK, 1); g15r_pixelBox(canvas, 31, 10, progressUsr, 14, G15_COLOR_BLACK, 1, G15_PIXEL_FILL); g15r_pixelBox(canvas, progressUsr, 10, 156, 14, G15_COLOR_BLACK, 1, G15_PIXEL_NOFILL); g15r_G15FPrint(canvas, (char *) "BUFFERS", 2, 0, 0, G15_JUSTIFY_LEFT, G15_COLOR_BLACK, 3); g15r_pixelBox(canvas, 31, 18, progressUsr+1, 22, G15_COLOR_BLACK, 1, G15_PIXEL_NOFILL); g15r_pixelBox(canvas, progressUsr+1, 18, progressBuffers, 22, G15_COLOR_BLACK, 1, G15_PIXEL_FILL); g15r_pixelBox(canvas, progressBuffers, 18, 156, 22, G15_COLOR_BLACK, 1, G15_PIXEL_NOFILL); g15r_G15FPrint(canvas, (char *) "CACHED", 3, 2, 0, G15_JUSTIFY_LEFT, G15_COLOR_BLACK, 4); g15r_pixelBox(canvas, 31, 26, progressBuffers+1, 30, G15_COLOR_BLACK, 1, G15_PIXEL_NOFILL); g15r_pixelBox(canvas, progressBuffers+1, 26, progressCached, 30, G15_COLOR_BLACK, 1, G15_PIXEL_FILL); g15r_pixelBox(canvas, progressCached, 26, 156, 30, G15_COLOR_BLACK, 1, G15_PIXEL_NOFILL); } //NET else if (screen == 3) { file.setFileName("/proc/net/dev"); file.open(QIODevice::ReadOnly); int recvBytes = 0; int transBytes = 0; file.readLine(); file.readLine(); while (file.canReadLine()) { QStringList line = QString(file.readLine()).split(QRegExp("\\s+")); if (line.at(1) != "lo:") { recvBytes += line.at(2).toInt(); transBytes += line.at(10).toInt(); } } file.close(); float recvVel = (recvBytes-recvBytesOld)*8; float transVel = (transBytes-transBytesOld)*8; float recvTotal = recvBytes; float transTotal = transBytes; recvBytesOld = recvBytes; transBytesOld = transBytes; char recvTotalUnit = 0; char transTotalUnit = 0; char recvVelUnit = 0; char transVelUnit = 0; while (recvVel >= 1024) { recvVel /= 1024; ++recvVelUnit; } while (transVel >= 1024) { transVel /= 1024; ++transVelUnit; } while (recvTotal >= 1024) { recvTotal /= 1024; ++recvTotalUnit; } while (transTotal >= 1024) { transTotal /= 1024; ++transTotalUnit; } recvVel = std::floor(recvVel*100) / 100; transVel = std::floor(transVel*100) / 100; recvTotal = std::floor(recvTotal*100) / 100; transTotal = std::floor(transTotal*100) / 100; QString L11 = QString::number(recvVel); if (recvVelUnit == 0) L11.append(" b/s "); else if (recvVelUnit == 1) L11.append(" Kb/s "); else if (recvVelUnit == 2) L11.append(" Mb/s "); else if (recvVelUnit == 3) L11.append(" Gb/s "); QString L12 = QString::number(transVel); if (transVelUnit == 0) L12.append(" b/s "); else if (transVelUnit == 1) L12.append(" Kb/s "); else if (transVelUnit == 2) L12.append(" Mb/s "); else if (transVelUnit == 3) L12.append(" Gb/s "); QString L21 = QString::number(recvTotal); if (recvTotalUnit == 0) L21.append(" B "); else if (recvTotalUnit == 1) L21.append(" KB "); else if (recvTotalUnit == 2) L21.append(" MB "); else if (recvTotalUnit == 3) L21.append(" GB "); QString L22 = QString::number(transTotal); if (transTotalUnit == 0) L22.append(" B "); else if (transTotalUnit == 1) L22.append(" KB "); else if (transTotalUnit == 2) L22.append(" MB "); else if (transTotalUnit == 3) L22.append(" GB "); g15r_G15FPrint(canvas, (char *) " RECEIVE TRANSMIT", 0, 2, 1, G15_JUSTIFY_LEFT, G15_COLOR_BLACK, 0); g15r_G15FPrint(canvas, (char *) L11.toStdString().c_str(), 0, 2, 1, G15_JUSTIFY_RIGHT, G15_COLOR_BLACK, 2); g15r_G15FPrint(canvas, (char *) L12.toStdString().c_str(), 0, 2, 1, G15_JUSTIFY_RIGHT, G15_COLOR_BLACK, 2); g15r_G15FPrint(canvas, (char *) L21.toStdString().c_str(), 0, 2, 1, G15_JUSTIFY_RIGHT, G15_COLOR_BLACK, 3); g15r_G15FPrint(canvas, (char *) L22.toStdString().c_str(), 0, 2, 1, G15_JUSTIFY_RIGHT, G15_COLOR_BLACK, 3); } g15r_G15FPrint(canvas, (char *) " ALL CPU MEM NET", 0, 0, 1, G15_JUSTIFY_LEFT, G15_COLOR_BLACK, 5); g15_send(fd, (char *) canvas->buffer, G15_BUFFER_LEN); }
void amarokApplet::update() { QDBusMessage m = QDBusMessage::createMethodCall((QString)"org.mpris.amarok",(QString)"/Player","",(QString)"GetStatus"); QDBusReply<QRect> result = QDBusConnection::sessionBus().call(m); g15r_clearScreen(canvas, 0); if (!result.isValid()) { g15r_G15FPrint (canvas, (char *) "Amarok", 0, -4, G15_TEXT_HUGE, G15_JUSTIFY_CENTER, G15_COLOR_BLACK, 1); g15r_G15FPrint (canvas, (char *) "Not Running", 0, 0, G15_TEXT_HUGE, G15_JUSTIFY_CENTER, G15_COLOR_BLACK, 2); } else { int status = result.value().left(); if (status == 2) g15r_G15FPrint (canvas, (char *) "Stopped", 0, 0, G15_TEXT_LARGE, G15_JUSTIFY_CENTER, G15_COLOR_BLACK, 2); else { m = QDBusMessage::createMethodCall((QString)"org.mpris.amarok",(QString)"/Player","",(QString)"GetMetadata"); QVariantMap map = QDBusReply<QVariantMap>(QDBusConnection::sessionBus().call(m)).value(); QString title = eliminarAccents(map.find("title").value().toString()); QString artist = eliminarAccents(map.find("artist").value().toString()); QString album = eliminarAccents(map.find("album").value().toString()); QString year = map.find("year").value().toString(); int length = map.find("mtime").value().toInt()/1000; m = QDBusMessage::createMethodCall((QString)"org.mpris.amarok",(QString)"/Player","",(QString)"PositionGet"); QDBusReply<int> rpos = QDBusConnection::sessionBus().call(m); int position = rpos.value()/1000; int totm = length / 60; int tots = length % 60; int posm = position / 60; int poss = position % 60; int maxlen = std::max(title.length(), std::max(artist.length(), album.length())); int text_size = G15_TEXT_SMALL; if (maxlen <= 20) text_size = G15_TEXT_LARGE; else if (maxlen > 20 && maxlen <= 30) text_size = G15_TEXT_MED; else { if (title.length() > 40) title = title.right(title.length()-(poss % (title.length()-38))); if (artist.length() > 40) artist = artist.right(artist.length()-(poss % (artist.length()-38))); if (album.length() > 40) album = album.right(album.length()-(poss % (album.length()-38))); } QString strtemps; if (posm < 10) strtemps.append("0"); strtemps.append(QString::number(posm)); strtemps.append(":"); if (poss < 10) strtemps.append("0"); strtemps.append(QString::number(poss)); strtemps.append("/"); if (totm < 10) strtemps.append("0"); strtemps.append(QString::number(totm)); strtemps.append(":"); if (tots < 10) strtemps.append("0"); strtemps.append(QString::number(tots)); int progress = float(position)/float(length)*160; g15r_G15FPrint (canvas, qstringToChar(title), 0, 0, text_size, G15_JUSTIFY_CENTER, G15_COLOR_BLACK, 0); g15r_G15FPrint (canvas, qstringToChar(artist), 0, 0, text_size, G15_JUSTIFY_CENTER, G15_COLOR_BLACK, 1); g15r_G15FPrint (canvas, qstringToChar(album), 0, 0, text_size, G15_JUSTIFY_CENTER, G15_COLOR_BLACK, 2); g15r_pixelBox(canvas, 0, 28, progress, 32, G15_COLOR_BLACK, 1, G15_PIXEL_FILL); g15r_pixelBox(canvas, progress, 28, 159, 32, G15_COLOR_BLACK, 1, G15_PIXEL_NOFILL); g15r_G15FPrint (canvas, qstringToChar(year), 4, 0, G15_TEXT_MED, G15_JUSTIFY_LEFT, G15_COLOR_BLACK, 5); g15r_G15FPrint (canvas, qstringToChar(strtemps), 0, 0, G15_TEXT_MED, G15_JUSTIFY_CENTER, G15_COLOR_BLACK, 5); } } g15_send(fd, (char *) canvas->buffer, G15_BUFFER_LEN); }
// Draws an icon on the screen MODULE_EXPORT int g15_icon (Driver *drvthis, int x, int y, int icon) { PrivateData *p = drvthis->private_data; x--; y--; switch (icon) { case ICON_BLOCK_FILLED: { int px1 = x * p->cellwidth; int py1 = y * p->cellheight; int px2 = px1 + (p->cellwidth - 2); int py2 = py1 + (p->cellheight - 2); g15r_pixelBox(p->canvas, px1, py1, px2, py2, G15_COLOR_BLACK, 1, G15_PIXEL_FILL); break; } case ICON_HEART_FILLED: { g15r_renderCharacterLarge(p->canvas, x, y, G15_ICON_HEART_FILLED, 0, 0); break; } case ICON_HEART_OPEN: { p->canvas->mode_reverse = 1; g15r_renderCharacterLarge(p->canvas, x, y, G15_ICON_HEART_OPEN, 0, 0); p->canvas->mode_reverse = 0; break; } case ICON_ARROW_UP: { g15r_renderCharacterLarge(p->canvas, x , y, G15_ICON_ARROW_UP, 0, 0); break; } case ICON_ARROW_DOWN: { g15r_renderCharacterLarge(p->canvas, x, y, G15_ICON_ARROW_DOWN, 0, 0); break; } case ICON_ARROW_LEFT: { g15r_renderCharacterLarge(p->canvas, x, y, G15_ICON_ARROW_LEFT, 0, 0); break; } case ICON_ARROW_RIGHT: { g15r_renderCharacterLarge(p->canvas, x, y, G15_ICON_ARROW_RIGHT, 0, 0); break; } case ICON_CHECKBOX_OFF: { g15r_renderCharacterLarge(p->canvas, x, y, G15_ICON_CHECKBOX_OFF, 0, 0); break; } case ICON_CHECKBOX_ON: { g15r_renderCharacterLarge(p->canvas, x, y, G15_ICON_CHECKBOX_ON, 0, 0); break; } case ICON_CHECKBOX_GRAY: { g15r_renderCharacterLarge(p->canvas, x, y, G15_ICON_CHECKBOX_GRAY, 0, 0); break; } case ICON_STOP: { g15r_renderCharacterLarge(p->canvas, x, y, G15_ICON_STOP, 0, 0); break; } case ICON_PAUSE: { g15r_renderCharacterLarge(p->canvas, x, y, G15_ICON_PAUSE, 0, 0); break; } case ICON_PLAY: { g15r_renderCharacterLarge(p->canvas, x, y, G15_ICON_PLAY, 0, 0); break; } case ICON_PLAYR: { g15r_renderCharacterLarge(p->canvas, x, y, G15_ICON_PLAYR, 0, 0); break; } case ICON_FF: { g15r_renderCharacterLarge(p->canvas, x, y, G15_ICON_FF, 0, 0); break; } case ICON_FR: { g15r_renderCharacterLarge(p->canvas, x, y, G15_ICON_FR, 0, 0); break; } case ICON_NEXT: { g15r_renderCharacterLarge(p->canvas, x, y, G15_ICON_NEXT, 0, 0); break; } case ICON_PREV: { g15r_renderCharacterLarge(p->canvas, x, y, G15_ICON_PREV, 0, 0); break; } case ICON_REC: { g15r_renderCharacterLarge(p->canvas, x, y, G15_ICON_REC, 0, 0); break; } default: return -1; /* Let the core do other icons */ } return 0; }