* src/video_output/vout_intf.c: use above option and set the default destination for snapshots
on OS X to the Desktop.
* REST: Add the Snapshot command to the menu's etc.
"o_mi_services" = id;
"o_mi_show_all" = id;
"o_mi_slower" = id;
+ "o_mi_snapshot" = id;
"o_mi_stop" = id;
"o_mi_subtitle" = id;
"o_mi_title" = id;
<plist version="1.0">
<dict>
<key>IBDocumentLocation</key>
- <string>47 61 505 517 0 0 800 578 </string>
+ <string>25 92 505 517 0 0 1280 938 </string>
<key>IBEditorPositions</key>
<dict>
<key>1617</key>
<key>2197</key>
<string>237 313 596 367 0 0 1024 746 </string>
<key>29</key>
- <string>421 486 419 44 0 0 800 578 </string>
+ <string>326 879 419 44 0 0 1280 938 </string>
<key>915</key>
<string>731 416 165 180 0 0 1024 746 </string>
</dict>
<key>IBOpenObjects</key>
<array>
<integer>21</integer>
+ <integer>29</integer>
</array>
<key>IBSystem Version</key>
<string>7S215</string>
if( ![o_window isZoomed] )
[o_window performZoom:self];
}
+ else if( [o_title isEqualToString: _NS("Snapshot") ] )
+ {
+ [o_window snapshot];
+ }
else
{
vlc_value_t val;
[[o_mi title] isEqualToString: _NS("Normal Size")] ||
[[o_mi title] isEqualToString: _NS("Double Size")] ||
[[o_mi title] isEqualToString: _NS("Fit to Screen")] ||
+ [[o_mi title] isEqualToString: _NS("Snapshot")] ||
[[o_mi title] isEqualToString: _NS("Float on Top")] )
{
id o_window;
IBOutlet id o_mi_fittoscreen;
IBOutlet id o_mi_fullscreen;
IBOutlet id o_mi_floatontop;
+ IBOutlet id o_mi_snapshot;
IBOutlet id o_mi_videotrack;
IBOutlet id o_mu_videotrack;
IBOutlet id o_mi_screen;
i_key = config_GetInt( p_intf, "key-fullscreen" );
[o_mi_fullscreen setKeyEquivalent: [NSString stringWithFormat:@"%C", VLCKeyToCocoa( i_key )]];
[o_mi_fullscreen setKeyEquivalentModifierMask: VLCModifiersToCocoa(i_key)];
+ i_key = config_GetInt( p_intf, "key-snapshot" );
+ [o_mi_snapshot setKeyEquivalent: [NSString stringWithFormat:@"%C", VLCKeyToCocoa( i_key )]];
+ [o_mi_snapshot setKeyEquivalentModifierMask: VLCModifiersToCocoa(i_key)];
var_Create( p_intf, "intf-change", VLC_VAR_BOOL );
[o_mi_fittoscreen setTitle: _NS("Fit to Screen")];
[o_mi_fullscreen setTitle: _NS("Fullscreen")];
[o_mi_floatontop setTitle: _NS("Float on Top")];
+ [o_mi_snapshot setTitle: _NS("Snapshot")];
[o_mi_videotrack setTitle: _NS("Video Track")];
[o_mu_videotrack setTitle: _NS("Video Track")];
[o_mi_screen setTitle: _NS("Video Device")];
- (void)toggleFloatOnTop;
- (void)toggleFullscreen;
- (BOOL)isFullscreen;
+- (void)snapshot;
- (void)updateTitle;
- (BOOL)windowShouldClose:(id)sender;
return( p_vout->b_fullscreen );
}
+- (void)snapshot
+{
+ vout_Control( p_vout, VOUT_SNAPSHOT );
+}
+
- (BOOL)canBecomeKeyWindow
{
return YES;
N_("Norwegian"), N_("Polish"), N_("Brazilian"), N_("Russian"),
N_("Swedish") };
+static char *ppsz_snap_formats[] =
+{ "png", "jpg" };
+
/*****************************************************************************
* Configuration options for the main program. Each module will also separatly
* define its own configuration options.
"Allows you to specify the directory where the video snapshots will " \
"be stored.")
+#define SNAP_FORMAT_TEXT N_("Video snapshot format")
+#define SNAP_FORMAT_LONGTEXT N_( \
+ "Allows you to specify the image format in which the video snapshots will " \
+ "be stored.")
+
#define ASPECT_RATIO_TEXT N_("Source aspect ratio")
#define ASPECT_RATIO_LONGTEXT N_( \
"This will force the source aspect ratio. For instance, some DVDs claim " \
ASPECT_RATIO_TEXT, ASPECT_RATIO_LONGTEXT, VLC_TRUE );
add_directory( "snapshot-path", NULL, NULL, SNAP_PATH_TEXT,
SNAP_PATH_LONGTEXT, VLC_FALSE );
+ add_string( "snapshot-format", "png", NULL, SNAP_FORMAT_TEXT,
+ SNAP_FORMAT_LONGTEXT, VLC_FALSE );
+ change_string_list( ppsz_snap_formats, NULL, 0 );
set_subcategory( SUBCAT_VIDEO_VOUT );
add_module( "vout", "video output", NULL, NULL, VOUT_TEXT, VOUT_LONGTEXT,
# define KEY_VOL_UP KEY_MODIFIER_COMMAND|KEY_UP
# define KEY_VOL_DOWN KEY_MODIFIER_COMMAND|KEY_DOWN
# define KEY_VOL_MUTE KEY_MODIFIER_COMMAND|KEY_MODIFIER_SHIFT|'m'
-# define KEY_SUBDELAY_UP KEY_MODIFIER_COMMAND|'k'
-# define KEY_SUBDELAY_DOWN KEY_MODIFIER_COMMAND|'j'
-# define KEY_AUDIODELAY_UP KEY_MODIFIER_COMMAND|'h'
-# define KEY_AUDIODELAY_DOWN KEY_MODIFIER_COMMAND|'g'
+# define KEY_SUBDELAY_UP KEY_MODIFIER_COMMAND|'j'
+# define KEY_SUBDELAY_DOWN KEY_MODIFIER_COMMAND|'h'
+# define KEY_AUDIODELAY_UP KEY_MODIFIER_COMMAND|'l'
+# define KEY_AUDIODELAY_DOWN KEY_MODIFIER_COMMAND|'k'
# define KEY_AUDIO_TRACK 'l'
# define KEY_SUBTITLE_TRACK 's'
# define KEY_INTF_SHOW 'i'
-# define KEY_SNAPSHOT KEY_MODIFIER_CTRL|'s'
+# define KEY_SNAPSHOT KEY_MODIFIER_COMMAND|KEY_MODIFIER_ALT|'s'
# define KEY_SET_BOOKMARK1 KEY_MODIFIER_COMMAND|KEY_F1
# define KEY_SET_BOOKMARK2 KEY_MODIFIER_COMMAND|KEY_F2
/* Create a few object variables we'll need later on */
var_Create( p_vout, "snapshot-path", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
+ var_Create( p_vout, "snapshot-format", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
var_Create( p_vout, "aspect-ratio", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
var_Create( p_vout, "width", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
var_Create( p_vout, "height", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
char *psz_filename;
subpicture_t *p_subpic;
picture_t *p_pif;
- vlc_value_t val;
+ vlc_value_t val, format;
int i_ret;
var_Get( p_vout, "snapshot-path", &val );
free( val.psz_string );
val.psz_string = 0;
}
+#ifdef SYS_DARWIN
+ if( !val.psz_string && p_vout->p_vlc->psz_homedir )
+ {
+ asprintf( &val.psz_string, "%s/Desktop",
+ p_vout->p_vlc->psz_homedir );
+ }
+#else
if( !val.psz_string && p_vout->p_vlc->psz_homedir )
{
asprintf( &val.psz_string, "%s/" CONFIG_DIR,
p_vout->p_vlc->psz_homedir );
}
+#endif
if( !val.psz_string )
{
msg_Err( p_vout, "no directory specified for snapshots" );
return VLC_EGENERIC;
}
+ var_Get( p_vout, "snapshot-format", &format );
+ if( format.psz_string && !*format.psz_string )
+ {
+ free( format.psz_string );
+ format.psz_string = strdup( "png" );
+ }
- asprintf( &psz_filename, "%s/vlcsnap-%u.png", val.psz_string,
- (unsigned int)(p_pic->date / 100000) & 0xFFFFFF );
+ asprintf( &psz_filename, "%s/vlcsnap-%u.%s", val.psz_string,
+ (unsigned int)(p_pic->date / 100000) & 0xFFFFFF, format.psz_string );
free( val.psz_string );
+ free( format.psz_string );
/* Save the snapshot */
fmt_in.i_chroma = p_vout->render.i_chroma;