Add ov_fopen() (like ov_open, but does the fopen within libvorbisfile)
[xiph/unicode.git] / sushivision / panel-2d.h
blobf1a851c55ac8a3d3cd2813f061cee10b7d3d41d8
1 /*
3 * sushivision copyright (C) 2006-2007 Monty <monty@xiph.org>
5 * sushivision is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2, or (at your option)
8 * any later version.
9 *
10 * sushivision is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with sushivision; see the file COPYING. If not, write to the
17 * Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
22 typedef struct {
24 GtkWidget *obj_table;
25 GtkWidget *dim_table;
27 /* only run those functions used by this panel */
28 int used_functions;
29 sv_func_t **used_function_list;
31 unsigned char *bg_todo;
32 int bg_next_line;
33 int bg_first_line;
34 int bg_last_line;
36 /**** Y PLANES ******/
37 int y_obj_num;
38 int **y_map; // indirected, dw*dh
39 _sv_ucolor_t **y_planes; // indirected, dw*dh
40 unsigned char **y_planetodo; // indirected, dh
41 int partial_remap;
43 int y_next_plane; // which y plane to issue next render
44 int y_next_line; // incremented when a line is claimed, per plane [0-ph)
46 sv_obj_t **y_obj_list; // list of objectives with a y plane
47 int *y_obj_to_panel; /* maps from position in condensed list to position in full list */
48 int *y_obj_from_panel; /* maps from position in full list to position in condensed list */
49 int *y_fout_offset;
51 /* cached resampling helpers */
52 int resample_serialno;
53 unsigned char *ydelA;
54 unsigned char *ydelB;
55 int *ynumA;
56 int *ynumB;
57 float yscalemul;
59 /* scales and data -> display scale mapping */
60 _sv_scalespace_t x;
61 _sv_scalespace_t x_v;
62 _sv_scalespace_t x_i;
63 _sv_scalespace_t y;
64 _sv_scalespace_t y_v;
65 _sv_scalespace_t y_i;
67 int scales_init;
68 double oldbox[4];
70 _sv_mapping_t *mappings;
71 _sv_slider_t **range_scales;
72 GtkWidget **range_pulldowns;
73 double *alphadel;
75 GtkWidget **dim_xb;
76 GtkWidget **dim_yb;
78 _sv_dim_widget_t *x_scale;
79 _sv_dim_widget_t *y_scale;
80 int x_dnum; // panel, not global list context
81 int y_dnum; // panel, not global list context
83 } _sv_panel2d_t;
85 typedef struct {
86 double *fout; // [function number * outval_number]
88 int **y_map; // [y_obj_list[i]][px]
89 int storage_width;
91 /* cached resampling helpers; x is here becasue locking overhead
92 would be prohibitive to share between threads */
93 int serialno;
94 unsigned char *xdelA;
95 unsigned char *xdelB;
96 int *xnumA;
97 int *xnumB;
98 float xscalemul;
100 } _sv_bythread_cache_2d_t;