File: screenshot.h

package info (click to toggle)
zapping 0.10~cvs6-16
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 16,008 kB
  • sloc: ansic: 110,600; asm: 11,770; sh: 9,809; xml: 3,186; makefile: 1,227; perl: 488
file content (104 lines) | stat: -rw-r--r-- 2,845 bytes parent folder | download | duplicates (6)
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/*
 * Screenshot saving plugin for Zapping
 * Copyright (C) 2000-2001 Iaki Garca Etxebarria
 * Copyright (C) 2001 Michael H. Schimek
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

#include "src/plugin_common.h"
#include "plugins/subtitle/view.h"
#include <pthread.h>

typedef struct screenshot_data screenshot_data;
typedef struct screenshot_backend screenshot_backend;
typedef struct backend_private backend_private;

struct screenshot_data
{
  gint			status;

  screenshot_backend *	backend;

  GtkWidget *		dialog;
  GtkWidget *		drawingarea;
  GtkWidget *		size_label;
  GtkWidget *		quality_slider;
  GtkEntry  *		entry;
  GdkPixbuf *		pixbuf;
  gchar *		auto_filename;

  gdouble		size_est;

  void *		data;
  tv_image_format	format;	/* Format of the grabbed image */
  GdkPixbuf *		subtitles;

  gchar *		io_buffer;
  guint			io_buffer_size;	/* Allocated */
  guint			io_buffer_used;

  gboolean		(* io_flush)(screenshot_data *, guint);
  FILE *		io_fp;

  gchar *		error;

  pthread_t		saving_thread;
  gboolean		thread_abort;	/* TRUE when the thread shall abort */

  GtkWidget *		status_window;	/* Progressbar */

  guint			lines;		/* Lines saved by thread (progress) */

  gchar *		command;	/* To be executed on completion */
  gchar *		filename;	/* The file we save */

  gchar			private[0];	/* Backend data */
};

struct screenshot_backend
{
  const gchar *		keyword;	/* Canonical */
  const gchar *		label;		/* gettext()ized */
  const gchar *		extension;

  guint			sizeof_private;

  gboolean		quality;	/* Supports quality option? */
  gdouble		bpp_est;	/* Static output size estimation */
  					/*  if no preview supported */

  gboolean		(* init)(screenshot_data *data, gboolean write,
				 gint quality); /* 0...100 */
  void			(* save)(screenshot_data *data);

  /* For preview, optional */
  void			(* load)(screenshot_data *data,
				 gchar *pixels, gint rowstride);
};

extern gboolean screenshot_close_everything;

extern void
screenshot_deinterlace		(void *				image,
				 const tv_image_format *	format,
				 gint				parity);

/*
 *  Encoding backends
 */
extern screenshot_backend screenshot_backend_jpeg;
extern screenshot_backend screenshot_backend_ppm;