Hi there, I have added a (maybe even "the") missing wallpaper mode to pcmanfm.
I can be described as follows: The image will be cropped by the maximum necessary amount to fill the whole screen without changing the aspect ratio (i.e. stretch). Technically it is a variation of the 'fit' mode. The difference is that it uses the greater of the width/height aspect ratios to scale the image. Thus it cuts off the image on two sides, as compaired to filling (the other) two sides with the background color. I have not added any translations yet. I'm not sure what the workflow would be here. One combo box item was added: "Crop to fill the entire screen". The german translation (considering the existing translations of the other items) would be "Zuschneiden". Regards Jonas Petersen Signed-off-by: Jonas Petersen <[email protected]> --- data/ui/desktop-pref.glade | 8 ++++++-- src/app-config.h | 1 + src/desktop.c | 5 ++++- src/pcmanfm.c | 4 ++-- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/data/ui/desktop-pref.glade b/data/ui/desktop-pref.glade index 25f7769..45b56c7 100644 --- a/data/ui/desktop-pref.glade +++ b/data/ui/desktop-pref.glade @@ -636,13 +636,17 @@ <col id="1">2</col> </row> <row> - <col id="0" translatable="yes">Center on the screen</col> + <col id="0" translatable="yes">Crop to fill the entire screen</col> <col id="1">3</col> </row> <row> - <col id="0" translatable="yes">Tile the image to fill the entire screen</col> + <col id="0" translatable="yes">Center on the screen</col> <col id="1">4</col> </row> + <row> + <col id="0" translatable="yes">Tile the image to fill the entire screen</col> + <col id="1">5</col> + </row> </data> </object> </interface> diff --git a/src/app-config.h b/src/app-config.h index a72d472..68ac99d 100644 --- a/src/app-config.h +++ b/src/app-config.h @@ -46,6 +46,7 @@ typedef enum FM_WP_COLOR, FM_WP_STRETCH, FM_WP_FIT, + FM_WP_CROP, FM_WP_CENTER, FM_WP_TILE }FmWallpaperMode; diff --git a/src/desktop.c b/src/desktop.c index 6725313..a2531f1 100644 --- a/src/desktop.c +++ b/src/desktop.c @@ -892,11 +892,14 @@ static void update_background(FmDesktop* desktop, int is_it) pix = scaled; break; case FM_WP_FIT: + case FM_WP_CROP: if(dest_w != src_w || dest_h != src_h) { gdouble w_ratio = (float)dest_w / src_w; gdouble h_ratio = (float)dest_h / src_h; - gdouble ratio = MIN(w_ratio, h_ratio); + gdouble ratio = app_config->wallpaper_mode == FM_WP_FIT + ? MIN(w_ratio, h_ratio) + : MAX(w_ratio, h_ratio); if(ratio != 1.0) { src_w *= ratio; diff --git a/src/pcmanfm.c b/src/pcmanfm.c index d62bb5f..bb1fee4 100644 --- a/src/pcmanfm.c +++ b/src/pcmanfm.c @@ -83,7 +83,7 @@ static GOptionEntry opt_entries[] = { "one-screen", '\0', 0, G_OPTION_ARG_NONE, &one_screen, N_("Use --desktop option only for one screen"), NULL }, { "set-wallpaper", 'w', 0, G_OPTION_ARG_FILENAME, &set_wallpaper, N_("Set desktop wallpaper from image FILE"), N_("FILE") }, /* don't translate list of modes in description, please */ - { "wallpaper-mode", '\0', 0, G_OPTION_ARG_STRING, &wallpaper_mode, N_("Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile)"), N_("MODE") }, + { "wallpaper-mode", '\0', 0, G_OPTION_ARG_STRING, &wallpaper_mode, N_("Set mode of desktop wallpaper. MODE=(color|stretch|fit|crop|center|tile)"), N_("MODE") }, { "show-pref", '\0', 0, G_OPTION_ARG_INT, &show_pref, N_("Open Preferences dialog on the page N"), N_("N") }, { "new-win", 'n', 0, G_OPTION_ARG_NONE, &new_win, N_("Open new window"), NULL }, /* { "find-files", 'f', 0, G_OPTION_ARG_NONE, &find_files, N_("Open Find Files utility"), NULL }, */ @@ -92,7 +92,7 @@ static GOptionEntry opt_entries[] = { NULL } }; -static const char* valid_wallpaper_modes[] = {"color", "stretch", "fit", "center", "tile"}; +static const char* valid_wallpaper_modes[] = {"color", "stretch", "fit", "crop", "center", "tile"}; static gboolean pcmanfm_run(gint screen_num); -- 1.7.10.4 ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_d2d_feb _______________________________________________ Pcmanfm-develop mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/pcmanfm-develop
