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
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 /*****************************************************************************
27 *****************************************************************************/
28 #ifndef VLC_LIB_PUZZLE_MGT_H
29 #define VLC_LIB_PUZZLE_MGT_H 1
36 #include <vlc_common.h>
37 #include <vlc_plugin.h>
38 #include <vlc_filter.h>
41 #include "puzzle_bezier.h"
42 #include "puzzle_lib.h"
43 #include "puzzle_pce.h"
44 #include "puzzle_mgt.h"
49 /*****************************************************************************
51 *****************************************************************************/
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
;
63 int32_t i_width
, i_lines
;
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 */
75 int32_t i_rows
, i_cols
;
77 save_piece_t
*ps_pieces
;
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
;
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
;
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
);