~exec64/imv

ref: 4c0123bb3b449a2ea45b3e831db725d853bb03a1 imv/src/backend.h -rw-r--r-- 1.2 KiB
4c0123bb — Harry Jeffery Release v4.0.1 3 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#ifndef IMV_BACKEND_H
#define IMV_BACKEND_H

#include <stddef.h>

struct imv_source;

enum backend_result {
  BACKEND_SUCCESS = 0, /* successful load */
  BACKEND_BAD_PATH = 1, /* no such file, bad permissions, etc. */
  BACKEND_UNSUPPORTED = 2, /* unsupported file format */
};

/* A backend is responsible for taking a path, or a raw data pointer, and
 * converting that into an imv_source. Each backend may be powered by a
 * different image library and support different image formats.
 */
struct imv_backend {
  /* Name of the backend, for debug and user informational purposes */
  const char *name;

  /* Information about the backend, displayed by help dialog */
  const char *description;

  /* Official website address */
  const char *website;

  /* License the backend is used under */
  const char *license;

  /* Input: path to open
   * Output: initialises the imv_source instance passed in
   */
  enum backend_result (*open_path)(const char *path, struct imv_source **src);

  /* Input: pointer to data and length of data
   * Output: initialises the imv_source instance passed in
   */
  enum backend_result (*open_memory)(void *data, size_t len, struct imv_source **src);
};

#endif