📄 bounce.c
字号:
rb->lcd_drawline(LCD_WIDTH/2, LCD_HEIGHT/2, xminute[pos], yminute[pos]); hour = hour*5 + minute/12; pos = 90-hour; if(pos >= 60) pos -= 60; rb->lcd_drawline(LCD_WIDTH/2, LCD_HEIGHT/2, xhour[pos], yhour[pos]); /* draw a circle */ for(i=0; i < 60; i+=3) { rb->lcd_drawline( xminute[i], yminute[i], xminute[(i+1)%60], yminute[(i+1)%60]); }}static int scrollit(void){ int b; unsigned int y=100; int x=LCD_WIDTH; unsigned int yy,xx; unsigned int i; int textpos=0; char* rock="Rockbox! Pure pleasure. Pure fun. Oooh. What fun! ;-) "; unsigned int rocklen = rb->strlen(rock); int letter; rb->lcd_clear_display(); while(1) { b = rb->button_get_w_tmo(HZ/10); if ( b == (BUTTON_OFF|BUTTON_REL) ) return 0; else if ( b == (BUTTON_ON|BUTTON_REL) ) return 1; rb->lcd_clear_display(); for(i=0, yy=y, xx=x; i< LETTERS_ON_SCREEN; i++) { letter = rock[(i+textpos) % rocklen ]; rb->lcd_bitmap((char *)char_gen_12x16[letter-0x20], xx, table[yy&63], 11, 16, false); yy += YADD; xx+= LCD_WIDTH/LETTERS_ON_SCREEN; } addclock(); rb->lcd_update(); x-= XSPEED; if(x < 0) { x += LCD_WIDTH/LETTERS_ON_SCREEN; y += YADD; textpos++; } y+=YSPEED; }}static int loopit(void){ int b; unsigned int y=100; unsigned int x=100; unsigned int yy,xx; unsigned int i; unsigned int ysanke=0; unsigned int xsanke=0; char* rock="ROCKbox"; unsigned int rocklen = rb->strlen(rock); int show=0; int timeout=0; char buffer[30]; rb->lcd_clear_display(); while(1) { b = rb->button_get_w_tmo(HZ/10); if ( b == (BUTTON_OFF|BUTTON_REL) ) return 0; if ( b == SYS_USB_CONNECTED) { rb->usb_screen(); return 0; } if ( b == (BUTTON_ON|BUTTON_REL) ) return 1; else if(b != BUTTON_NONE) timeout=20; y+= speed[ysanke&15] + values[NUM_YADD].num; x+= speed[xsanke&15] + values[NUM_XADD].num; rb->lcd_clear_display(); addclock(); if(timeout) { switch(b) { case BUTTON_LEFT: values[show].num--; break; case BUTTON_RIGHT: values[show].num++; break; case BUTTON_UP: if(++show == NUM_LAST) show=0; break; case BUTTON_DOWN: if(--show < 0) show=NUM_LAST-1; break; } rb->snprintf(buffer, 30, "%s: %d", values[show].what, values[show].num); rb->lcd_putsxy(0, 56, buffer); timeout--; } for(i=0, yy=y, xx=x; i<rocklen; i++, yy+=values[NUM_YDIST].num, xx+=values[NUM_XDIST].num) rb->lcd_bitmap((char *)char_gen_12x16[rock[i]-0x20], xtable[xx%71], table[yy&63], 11, 16, false); rb->lcd_update(); ysanke+= values[NUM_YSANKE].num; xsanke+= values[NUM_XSANKE].num; }}enum plugin_status plugin_start(struct plugin_api* api, void* parameter){ int w, h; char *off = "[Off] to stop"; int len; TEST_PLUGIN_API(api); (void)(parameter); rb = api; len = rb->strlen(SS_TITLE); rb->lcd_setfont(FONT_SYSFIXED); rb->lcd_getstringsize(SS_TITLE,&w, &h); /* Get horizontel centering for text */ len *= w; if (len%2 != 0) len = ((len+1)/2)+(w/2); else len /= 2; if (h%2 != 0) h = (h/2)+1; else h /= 2; rb->lcd_clear_display(); rb->lcd_putsxy(LCD_WIDTH/2-len, (LCD_HEIGHT/2)-h, SS_TITLE); len = 1; rb->lcd_getstringsize(off, &w, &h); /* Get horizontel centering for text */ len *= w; if (len%2 != 0) len = ((len+1)/2)+(w/2); else len /= 2; if (h%2 != 0) h = (h/2)+1; else h /= 2; rb->lcd_putsxy(LCD_WIDTH/2-len, LCD_HEIGHT-(2*h), off); rb->lcd_update(); rb->sleep(HZ); do { h= loopit(); if(h) h = scrollit(); } while(h); rb->lcd_setfont(FONT_UI); return false;}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -