[Bf-blender-cvs] [054aa61] master: File browser - change thumbnails size with a slider

Bastien Montagne noreply at git.blender.org
Wed Apr 29 21:31:20 CEST 2015


Commit: 054aa61f3c9af0997cbb0ecf89f73227723a24cd
Author: Bastien Montagne
Date:   Wed Apr 29 21:25:34 2015 +0200
Branches: master
https://developer.blender.org/rB054aa61f3c9af0997cbb0ecf89f73227723a24cd

File browser - change thumbnails size with a slider

We can now scale from 32px up to 256px (default has been upgraded to 128px).
Thumbnails are now generated as 'large', i.e. 256px.

Previews are scaled up if necessary, unlike icons (for folders or files without preview images).

Note that .blend thumbnails themselves remain in 128px for now (they are embeded in .blend files,
not quite sure we want to make them four times bigger...).

Patch by DMS (Yaron Dames), with final edits by myself.

Reviewers: mont29

Subscribers: Severin, mont29

Differential Revision: https://developer.blender.org/D1260

===================================================================

M	release/scripts/startup/bl_ui/space_filebrowser.py
M	source/blender/blenloader/intern/versioning_270.c
M	source/blender/editors/space_file/file_draw.c
M	source/blender/editors/space_file/filelist.c
M	source/blender/editors/space_file/filesel.c
M	source/blender/imbuf/intern/thumbs.c
M	source/blender/makesdna/DNA_space_types.h
M	source/blender/makesrna/intern/rna_space.c

===================================================================

diff --git a/release/scripts/startup/bl_ui/space_filebrowser.py b/release/scripts/startup/bl_ui/space_filebrowser.py
index 8acf8cf..5da660f 100644
--- a/release/scripts/startup/bl_ui/space_filebrowser.py
+++ b/release/scripts/startup/bl_ui/space_filebrowser.py
@@ -53,6 +53,10 @@ class FILEBROWSER_HT_header(Header):
         # can be None when save/reload with a file selector open
         if params:
             layout.prop(params, "display_type", expand=True, text="")
+
+            if params.display_type == 'FILE_IMGDISPLAY':
+                layout.prop(params, "thumbnails_size")
+
             layout.prop(params, "sort_method", expand=True, text="")
 
             layout.prop(params, "show_hidden", text="", icon='FILE_HIDDEN')
diff --git a/source/blender/blenloader/intern/versioning_270.c b/source/blender/blenloader/intern/versioning_270.c
index c886287..2343ba0 100644
--- a/source/blender/blenloader/intern/versioning_270.c
+++ b/source/blender/blenloader/intern/versioning_270.c
@@ -799,4 +799,28 @@ void blo_do_versions_270(FileData *fd, Library *UNUSED(lib), Main *main)
 			}
 		}
 	}
+
+	if (!MAIN_VERSION_ATLEAST(main, 274, 6)) {
+		bScreen *screen;
+
+		if (!DNA_struct_elem_find(fd->filesdna, "FileSelectParams", "int", "thumbnails_size")) {
+			for (screen = main->screen.first; screen; screen = screen->id.next) {
+				ScrArea *sa;
+
+				for (sa = screen->areabase.first; sa; sa = sa->next) {
+					SpaceLink *sl;
+
+					for (sl = sa->spacedata.first; sl; sl = sl->next) {
+						if (sl->spacetype == SPACE_FILE) {
+							SpaceFile *sfile = (SpaceFile *)sl;
+
+							if (sfile->params) {
+								sfile->params->thumbnails_size = 128;
+							}
+						}
+					}
+				}
+			}
+		}
+	}
 }
diff --git a/source/blender/editors/space_file/file_draw.c b/source/blender/editors/space_file/file_draw.c
index 9763efb..d5b9c16 100644
--- a/source/blender/editors/space_file/file_draw.c
+++ b/source/blender/editors/space_file/file_draw.c
@@ -329,6 +329,7 @@ static void file_draw_preview(uiBlock *block, struct direntry *file, int sx, int
 	float fx, fy;
 	float dx, dy;
 	int xco, yco;
+	float ui_imbx, ui_imby;
 	float scaledx, scaledy;
 	float scale;
 	int ex, ey;
@@ -336,23 +337,26 @@ static void file_draw_preview(uiBlock *block, struct direntry *file, int sx, int
 
 	BLI_assert(imb != NULL);
 
-	if ((imb->x * UI_DPI_FAC > layout->prv_w) ||
-	    (imb->y * UI_DPI_FAC > layout->prv_h))
+	ui_imbx = imb->x * UI_DPI_FAC;
+	ui_imby = imb->y * UI_DPI_FAC;
+	/* Unlike thumbnails, icons are not scaled up. */
+	if (((ui_imbx > layout->prv_w) || (ui_imby > layout->prv_h)) ||
+	    (!is_icon && ((ui_imbx < layout->prv_w) || (ui_imby < layout->prv_h))))
 	{
 		if (imb->x > imb->y) {
 			scaledx = (float)layout->prv_w;
-			scaledy =  ( (float)imb->y / (float)imb->x) * layout->prv_w;
+			scaledy = ((float)imb->y / (float)imb->x) * layout->prv_w;
 			scale = scaledx / imb->x;
 		}
 		else {
 			scaledy = (float)layout->prv_h;
-			scaledx =  ( (float)imb->x / (float)imb->y) * layout->prv_h;
+			scaledx = ((float)imb->x / (float)imb->y) * layout->prv_h;
 			scale = scaledy / imb->y;
 		}
 	}
 	else {
-		scaledx = (float)imb->x * UI_DPI_FAC;
-		scaledy = (float)imb->y * UI_DPI_FAC;
+		scaledx = ui_imbx;
+		scaledy = ui_imby;
 		scale = UI_DPI_FAC;
 	}
 
diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c
index 87e6183..2853ee9 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -1349,7 +1349,7 @@ static void thumbnails_startjob(void *tjv, short *stop, short *do_update, float
 		else if (limg->flags & FILE_TYPE_FTFONT) {
 			source = THB_SOURCE_FONT;
 		}
-		limg->img = IMB_thumb_manage(limg->path, THB_NORMAL, source);
+		limg->img = IMB_thumb_manage(limg->path, THB_LARGE, source);
 		*do_update = true;
 		PIL_sleep_ms(10);
 		limg = limg->next;
diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c
index 6858f53..d89e55c 100644
--- a/source/blender/editors/space_file/filesel.c
+++ b/source/blender/editors/space_file/filesel.c
@@ -102,6 +102,8 @@ short ED_fileselect_set_params(SpaceFile *sfile)
 		/* set path to most recently opened .blend */
 		BLI_split_dirfile(G.main->name, sfile->params->dir, sfile->params->file, sizeof(sfile->params->dir), sizeof(sfile->params->file));
 		sfile->params->filter_glob[0] = '\0';
+		/* set the default thumbnails size */
+		sfile->params->thumbnails_size = 128;
 	}
 
 	params = sfile->params;
@@ -527,8 +529,8 @@ void ED_fileselect_init_layout(struct SpaceFile *sfile, ARegion *ar)
 	layout->textheight = textheight;
 
 	if (params->display == FILE_IMGDISPLAY) {
-		layout->prv_w = 4.8f * UI_UNIT_X;
-		layout->prv_h = 4.8f * UI_UNIT_Y;
+		layout->prv_w = ((float)params->thumbnails_size / 20.0f) * UI_UNIT_X;
+		layout->prv_h = ((float)params->thumbnails_size / 20.0f) * UI_UNIT_Y;
 		layout->tile_border_x = 0.3f * UI_UNIT_X;
 		layout->tile_border_y = 0.3f * UI_UNIT_X;
 		layout->prv_border_x = 0.3f * UI_UNIT_X;
diff --git a/source/blender/imbuf/intern/thumbs.c b/source/blender/imbuf/intern/thumbs.c
index 2318553..a608aa0 100644
--- a/source/blender/imbuf/intern/thumbs.c
+++ b/source/blender/imbuf/intern/thumbs.c
@@ -283,9 +283,14 @@ static bool thumbpath_from_uri(const char *uri, char *path, const int path_len,
 void IMB_thumb_makedirs(void)
 {
 	char tpath[FILE_MAX];
+#if 0  /* UNUSED */
 	if (get_thumb_dir(tpath, THB_NORMAL)) {
 		BLI_dir_create_recursive(tpath);
 	}
+#endif
+	if (get_thumb_dir(tpath, THB_LARGE)) {
+		BLI_dir_create_recursive(tpath);
+	}
 	if (get_thumb_dir(tpath, THB_FAIL)) {
 		BLI_dir_create_recursive(tpath);
 	}
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index 09651bd..7812103 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -590,6 +590,7 @@ typedef struct FileSelectParams {
 	int active_file;
 	int sel_first;
 	int sel_last;
+	int thumbnails_size;
 
 	/* short */
 	short type; /* XXXXX for now store type here, should be moved to the operator */
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index fd03840..eade210 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -3788,6 +3788,12 @@ static void rna_def_fileselect_params(BlenderRNA *brna)
 	RNA_def_property_ui_text(prop, "Name Filter", "Filter by name, supports '*' wildcard");
 	RNA_def_property_flag(prop, PROP_TEXTEDIT_UPDATE);
 	RNA_def_property_update(prop, NC_SPACE | ND_SPACE_FILE_LIST, NULL);
+
+	prop = RNA_def_property(srna, "thumbnails_size", PROP_INT, PROP_PIXEL);
+	RNA_def_property_int_sdna(prop, NULL, "thumbnails_size");
+	RNA_def_property_range(prop, 32, 256);
+	RNA_def_property_ui_text(prop, "Thumbnails Size", "Change the size of the thumbnails");
+	RNA_def_property_update(prop, NC_SPACE | ND_SPACE_FILE_LIST, NULL);
 }
 
 static void rna_def_filemenu_entry(BlenderRNA *brna)




More information about the Bf-blender-cvs mailing list