GFXprim
2D bitmap graphics library with emphasis on speed and correctness
Loading...
Searching...
No Matches
gp_grabber.h
1// SPDX-License-Identifier: LGPL-2.1-or-later
2/*
3 * Copyright (C) 2009-2012 Cyril Hrubis <metan@ucw.cz>
4 */
5
6#ifndef GP_GRABBERS_GRABBER_H
7#define GP_GRABBERS_GRABBER_H
8
9#include <core/gp_types.h>
10
11typedef struct gp_grabber gp_grabber;
12
13struct gp_grabber {
14 /*
15 * Pixmap with current frame.
16 */
17 struct gp_pixmap *frame;
18
19 /*
20 * Returns 0 if there are no images in queue and 1 otherwise.
21 */
22 int (*poll)(gp_grabber *self);
23
24 /*
25 * Grabber fd, may be set -1 if grabber doesn't have one.
26 */
27 int fd;
28
29 /*
30 * starts the actuall grabbing. May be NULL if not needed.
31 */
32 int (*start)(gp_grabber *self);
33
34 /*
35 * stops the grabbing. May be NULL if not needed.
36 */
37 int (*stop)(gp_grabber *self);
38
39 /*
40 * exit functions. Closes fd, frees memory.
41 */
42 void (*exit)(gp_grabber *self);
43
44 char priv[];
45};
46
47#define GP_GRABBER_PRIV(grabber) ((void*)(grabber)->priv)
48
49static inline void gp_grabber_exit(gp_grabber *self)
50{
51 self->exit(self);
52}
53
54static inline int gp_grabber_poll(gp_grabber *self)
55{
56 return self->poll(self);
57}
58
59static inline int gp_grabber_start(gp_grabber *self)
60{
61 if (self->start)
62 return self->start(self);
63
64 return 0;
65}
66
67static inline int gp_grabber_stop(gp_grabber *self)
68{
69 if (self->stop)
70 return self->stop(self);
71
72 return 0;
73}
74
75#endif /* GP_GRABBERS_GRABBER_H */
A common types.
A pixmap buffer.
Definition gp_pixmap.h:33