|
Packit |
9c6abc |
// Copyright 2017 Google Inc. All Rights Reserved.
|
|
Packit |
9c6abc |
//
|
|
Packit |
9c6abc |
// Use of this source code is governed by a BSD-style license
|
|
Packit |
9c6abc |
// that can be found in the COPYING file in the root of the source
|
|
Packit |
9c6abc |
// tree. An additional intellectual property rights grant can be found
|
|
Packit |
9c6abc |
// in the file PATENTS. All contributing project authors may
|
|
Packit |
9c6abc |
// be found in the AUTHORS file in the root of the source tree.
|
|
Packit |
9c6abc |
// -----------------------------------------------------------------------------
|
|
Packit |
9c6abc |
//
|
|
Packit |
9c6abc |
// Simple SDL-based WebP file viewer.
|
|
Packit |
9c6abc |
// Does not support animation, just static images.
|
|
Packit |
9c6abc |
//
|
|
Packit |
9c6abc |
// Press 'q' to exit.
|
|
Packit |
9c6abc |
//
|
|
Packit |
9c6abc |
// Author: James Zern (jzern@google.com)
|
|
Packit |
9c6abc |
|
|
Packit |
9c6abc |
#include <stdio.h>
|
|
Packit |
9c6abc |
|
|
Packit |
9c6abc |
#ifdef HAVE_CONFIG_H
|
|
Packit |
9c6abc |
#include "webp/config.h"
|
|
Packit |
9c6abc |
#endif
|
|
Packit |
9c6abc |
|
|
Packit |
9c6abc |
#if defined(WEBP_HAVE_SDL)
|
|
Packit |
9c6abc |
|
|
Packit |
9c6abc |
#include "webp_to_sdl.h"
|
|
Packit |
9c6abc |
#include "webp/decode.h"
|
|
Packit |
9c6abc |
#include "imageio/imageio_util.h"
|
|
Packit |
9c6abc |
|
|
Packit |
9c6abc |
#if defined(WEBP_HAVE_JUST_SDL_H)
|
|
Packit |
9c6abc |
#include <SDL.h>
|
|
Packit |
9c6abc |
#else
|
|
Packit |
9c6abc |
#include <SDL/SDL.h>
|
|
Packit |
9c6abc |
#endif
|
|
Packit |
9c6abc |
|
|
Packit |
9c6abc |
static void ProcessEvents(void) {
|
|
Packit |
9c6abc |
int done = 0;
|
|
Packit |
9c6abc |
SDL_Event event;
|
|
Packit |
9c6abc |
while (!done && SDL_WaitEvent(&event)) {
|
|
Packit |
9c6abc |
switch (event.type) {
|
|
Packit |
9c6abc |
case SDL_KEYUP:
|
|
Packit |
9c6abc |
switch (event.key.keysym.sym) {
|
|
Packit |
9c6abc |
case SDLK_q: done = 1; break;
|
|
Packit |
9c6abc |
default: break;
|
|
Packit |
9c6abc |
}
|
|
Packit |
9c6abc |
break;
|
|
Packit |
9c6abc |
default: break;
|
|
Packit |
9c6abc |
}
|
|
Packit |
9c6abc |
}
|
|
Packit |
9c6abc |
}
|
|
Packit |
9c6abc |
|
|
Packit |
9c6abc |
int main(int argc, char* argv[]) {
|
|
Packit |
9c6abc |
int c;
|
|
Packit |
9c6abc |
int ok = 0;
|
|
Packit |
9c6abc |
for (c = 1; c < argc; ++c) {
|
|
Packit |
9c6abc |
const char* file = NULL;
|
|
Packit |
9c6abc |
const uint8_t* webp = NULL;
|
|
Packit |
9c6abc |
size_t webp_size = 0;
|
|
Packit |
9c6abc |
if (!strcmp(argv[c], "-h")) {
|
|
Packit |
9c6abc |
printf("Usage: %s [-h] image.webp [more_files.webp...]\n", argv[0]);
|
|
Packit |
9c6abc |
return 0;
|
|
Packit |
9c6abc |
} else {
|
|
Packit |
9c6abc |
file = argv[c];
|
|
Packit |
9c6abc |
}
|
|
Packit |
9c6abc |
if (file == NULL) continue;
|
|
Packit |
9c6abc |
if (!ImgIoUtilReadFile(file, &webp, &webp_size)) {
|
|
Packit |
9c6abc |
fprintf(stderr, "Error opening file: %s\n", file);
|
|
Packit |
9c6abc |
goto Error;
|
|
Packit |
9c6abc |
}
|
|
Packit |
9c6abc |
if (webp_size != (size_t)(int)webp_size) {
|
|
Packit |
9c6abc |
fprintf(stderr, "File too large.\n");
|
|
Packit |
9c6abc |
goto Error;
|
|
Packit |
9c6abc |
}
|
|
Packit |
9c6abc |
ok = WebpToSDL((const char*)webp, (int)webp_size);
|
|
Packit |
9c6abc |
free((void*)webp);
|
|
Packit |
9c6abc |
if (!ok) {
|
|
Packit |
9c6abc |
fprintf(stderr, "Error decoding file %s\n", file);
|
|
Packit |
9c6abc |
goto Error;
|
|
Packit |
9c6abc |
}
|
|
Packit |
9c6abc |
ProcessEvents();
|
|
Packit |
9c6abc |
}
|
|
Packit |
9c6abc |
ok = 1;
|
|
Packit |
9c6abc |
|
|
Packit |
9c6abc |
Error:
|
|
Packit |
9c6abc |
SDL_Quit();
|
|
Packit |
9c6abc |
return ok ? 0 : 1;
|
|
Packit |
9c6abc |
}
|
|
Packit |
9c6abc |
|
|
Packit |
9c6abc |
#else // !WEBP_HAVE_SDL
|
|
Packit |
9c6abc |
|
|
Packit |
9c6abc |
int main(int argc, const char *argv[]) {
|
|
Packit |
9c6abc |
fprintf(stderr, "SDL support not enabled in %s.\n", argv[0]);
|
|
Packit |
9c6abc |
(void)argc;
|
|
Packit |
9c6abc |
return 0;
|
|
Packit |
9c6abc |
}
|
|
Packit |
9c6abc |
|
|
Packit |
9c6abc |
#endif
|