demux: mp4: avoid audio cuts on seek
[vlc.git] / modules / video_filter / puzzle_mgt.h
blob87006a787cb70165a36659a7dfa541340813894b
1 /*****************************************************************************
2 * puzzle_mgt.h : Puzzle game filter - game management
3 *****************************************************************************
4 * Copyright (C) 2005-2009 VLC authors and VideoLAN
5 * Copyright (C) 2013 Vianney Boyer
6 * $Id$
8 * Authors: Vianney Boyer <vlcvboyer -at- gmail -dot- com>
10 * This program is free software; you can redistribute it and/or modify it
11 * under the terms of the GNU Lesser General Public License as published by
12 * the Free Software Foundation; either version 2.1 of the License, or
13 * (at your option) any later version.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU Lesser General Public License for more details.
20 * You should have received a copy of the GNU Lesser General Public License
21 * along with this program; if not, write to the Free Software Foundation,
22 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
23 *****************************************************************************/
25 /*****************************************************************************
26 * Preamble
27 *****************************************************************************/
28 #ifndef VLC_LIB_PUZZLE_MGT_H
29 #define VLC_LIB_PUZZLE_MGT_H 1
31 #ifdef HAVE_CONFIG_H
32 # include "config.h"
33 #endif
34 #include <math.h>
36 #include <vlc_common.h>
37 #include <vlc_plugin.h>
38 #include <vlc_filter.h>
39 #include <vlc_rand.h>
41 #include "puzzle_bezier.h"
42 #include "puzzle_lib.h"
43 #include "puzzle_pce.h"
44 #include "puzzle_mgt.h"
46 #define NO_PCE -1
49 /*****************************************************************************
50 * Local prototypes
51 *****************************************************************************/
53 typedef struct {
54 int32_t i_preview_width, i_preview_lines;
55 int32_t i_border_width, i_border_lines;
56 int32_t i_pce_max_width, i_pce_max_lines;
57 int32_t i_width, i_lines, i_pitch, i_visible_pitch;
58 uint8_t i_pixel_pitch;
59 } puzzle_plane_t;
61 typedef struct {
62 int32_t i_x, i_y;
63 int32_t i_width, i_lines;
64 } puzzle_array_t;
66 typedef struct {
67 int32_t i_original_row, i_original_col;
68 int32_t i_top_shape, i_btm_shape, i_right_shape, i_left_shape;
69 float f_pos_x, f_pos_y;
70 int8_t i_actual_angle; /* 0 = 0°, 1 = 90°... rotation center = top-left corner */
71 int32_t i_actual_mirror; /* +1 = without mirror ; -1 = with mirror */
72 } save_piece_t;
74 typedef struct {
75 int32_t i_rows, i_cols;
76 uint8_t i_rotate;
77 save_piece_t *ps_pieces;
78 } save_game_t;
80 typedef struct {
81 int32_t i_rows, i_cols;
82 int32_t i_pict_width, i_pict_height;
83 int32_t i_desk_width, i_desk_height;
84 int32_t i_piece_types;
85 uint32_t i_pieces_nbr;
86 int32_t i_preview_size;
87 int32_t i_shape_size;
88 int32_t i_border;
89 uint8_t i_planes;
90 /* game settings */
91 bool b_preview;
92 bool b_blackslot;
93 bool b_near;
94 bool b_advanced;
95 uint8_t i_mode;
96 uint8_t i_rotate; /* 0=none, 1=0/180, 2=0/90/180/270, 3=0/90/180/270 w/ mirror */
97 int32_t i_auto_shuffle_speed, i_auto_solve_speed;
98 } param_t;
100 int puzzle_bake ( filter_t *, picture_t * , picture_t * );
101 void puzzle_free_ps_puzzle_array ( filter_t * );
102 int puzzle_bake_piece ( filter_t * );
103 void puzzle_set_left_top_shapes( filter_t *p_filter);
104 void puzzle_random_rotate( filter_t *p_filter);
105 void puzzle_free_ps_pieces ( filter_t * );
106 int puzzle_allocate_ps_pieces( filter_t *p_filter);
108 bool puzzle_is_valid( filter_sys_t *p_sys, int32_t *pi_pce_lst );
109 int puzzle_shuffle( filter_t * );
110 int puzzle_generate_rand_pce_list( filter_t *p_filter, int32_t **pi_pce_lst );
111 bool puzzle_is_finished( filter_sys_t *, int32_t *pi_pce_lst );
112 int puzzle_piece_foreground( filter_t *p_filter, int32_t i_piece);
113 void puzzle_count_pce_group( filter_t *p_filter);
114 void puzzle_solve_pces_group( filter_t *p_filter);
115 void puzzle_solve_pces_accuracy( filter_t *p_filter);
116 int puzzle_sort_layers( filter_t *p_filter);
118 void puzzle_auto_solve( filter_t *p_filter);
119 void puzzle_auto_shuffle( filter_t *p_filter);
121 save_game_t* puzzle_save(filter_t *p_filter);
122 void puzzle_load( filter_t *p_filter, save_game_t *ps_save_game);
124 #endif