Создание скриншотов

Создание скриншотов на самом плеере

Фотографии vogue-плеера иногда выглядят безобразно, а хочется четкой и яркой картинки. Для этого имеется возможность, любезно предоставленная разработчиками MiniOS, создавать скриншоты непосредственно на самом устройстве. Чтобы все заработало:

В файлах /mtv_50/gui_lib/src/Fb.c/mtv_50/gui_lib/src/Fb.h и /mtv_50/common/keymsg.c необходимо добавить дефайн:

#define SCREEN_SNAP_MODE

После этого при нажатии на кнопку POWER в файловой системе будет создана папка \SCREENS, куда будут складываться скриншоты xxx.bmp, где xxx - номер скриншота. Следует учесть, что при выключении-включении устройства при создании новых скриншотов они будут всегда начинаться с номера 000, таким образом затирая уже существующие.

Поменять код кнопки для создания скриншотов можно в файле /mtv_50/common/keymsg.c в строках:
#ifdef SCREEN_SNAP_MODE
if(curdownkeycode & 0x40){    //Код клавиши, по умолчанию 0x40 (POWER)
    FbSnap();
    curdownkeycode = 0;
    myPostMessage = 0;
    continue;
}
#endif // SCREEN_SNAP_MODE


В результате получаются такие красивые картинки:


Исправление процедуры создания скриншотов

Как было сказано выше, при каждом включении-выключении устройства скриншоты начинают создаваться с номера 000, не зависимо от того, имеются ли уже в папке \SCREENS другие скриншоты. И если они там имеются, то они будут перезаписаны. Исправить это довольно легко:

В файле /mtv_50/gui_lib/src/Fb.c в функции FbSnap() после строки
sprintf(filename, "%s\\%03d.bmp", SCREEN_SNAP_FOLDER, snap_count);
достаточно вставить такую конструкцию:
while (CheckFileExist(filename)) {
   snap_count ++;
   memset(filename, 0x0, MAX_PATH);
   sprintf(filename, "%s\\%03d.bmp", SCREEN_SNAP_FOLDER, snap_count);
}

Теперь в файле /mtv_50/common/system.c необходимо функцию CheckFileExist сделать публичной, для этого нужно заменить объявление функции
static int CheckFileExist(const char *filename)
на
int CheckFileExist(const char *filename)

И соответственно прописать объявление нашей функции в файле /mtv_50/common/system.h добавив в него строку:
int CheckFileExist(const char *filename);

После этого скриншоты будут создаваться начиная с последнего номера, не зависимо от выключения или включения устройства, и не будут перезаписывать уже существующие.
Comments