Cleanup: deduplicate code.
authorBastien Montagne <montagne29@wanadoo.fr>
Mon, 4 May 2015 19:12:28 +0000 (21:12 +0200)
committerBastien Montagne <montagne29@wanadoo.fr>
Mon, 4 May 2015 19:13:35 +0000 (21:13 +0200)
FileBrowser had its own 'shorten_string' func, when we have a full fledge one in interface_widget code...

source/blender/editors/include/UI_interface.h
source/blender/editors/interface/interface_widgets.c
source/blender/editors/space_file/file_draw.c
source/blender/editors/space_file/file_intern.h
source/blender/editors/space_file/filesel.c

index 1e0cc972ef82ae04a3042660cec0d15bfda888ea..01fd19c14e97d380c8c1eb46c9a952f81efb3c74 100644 (file)
@@ -319,6 +319,11 @@ void UI_draw_safe_areas(
 #define UI_SCROLL_NO_OUTLINE    (1 << 2)
 void UI_draw_widget_scroll(struct uiWidgetColors *wcol, const struct rcti *rect, const struct rcti *slider, int state);
 
+/* Shortening string helper. */
+float UI_text_clip_middle_ex(
+        struct uiFontStyle *fstyle, char *str, float okwidth, const float minwidth,
+        const size_t max_len, const char *rpart_sep);
+
 /* Callbacks
  *
  * UI_block_func_handle_set/ButmFunc are for handling events through a callback.
index 08bd2d3360ca13e8724f0be6acedf44e9f0e065a..cc7f975b2752f6aaa6e6f348b0126d69f57b857d 100644 (file)
@@ -965,8 +965,9 @@ static void ui_text_clip_right_ex(uiFontStyle *fstyle, char *str, const size_t m
  * If rpart_sep is not Null, the part of str starting to first occurrence of rpart_sep is preserved at all cost (useful
  * for strings with shortcuts, like 'AVeryLongFooBarLabelForMenuEntry|Ctrl O' -> 'AVeryLong...MenuEntry|Ctrl O').
  */
-static float ui_text_clip_middle_ex(uiFontStyle *fstyle, char *str, float okwidth, const float minwidth,
-                                    const size_t max_len, const char *rpart_sep)
+float UI_text_clip_middle_ex(
+        uiFontStyle *fstyle, char *str, float okwidth, const float minwidth,
+        const size_t max_len, const char *rpart_sep)
 {
        float strwidth;
 
@@ -1066,7 +1067,7 @@ static float ui_text_clip_middle_ex(uiFontStyle *fstyle, char *str, float okwidt
 }
 
 /**
- * Wrapper around ui_text_clip_middle_ex.
+ * Wrapper around UI_text_clip_middle_ex.
  */
 static void ui_text_clip_middle(uiFontStyle *fstyle, uiBut *but, const rcti *rect)
 {
@@ -1077,7 +1078,7 @@ static void ui_text_clip_middle(uiFontStyle *fstyle, uiBut *but, const rcti *rec
        const float minwidth = (float)(UI_DPI_ICON_SIZE) / but->block->aspect * 2.0f;
 
        but->ofs = 0;
-       but->strwidth = ui_text_clip_middle_ex(fstyle, but->drawstr, okwidth, minwidth, max_len, NULL);
+       but->strwidth = UI_text_clip_middle_ex(fstyle, but->drawstr, okwidth, minwidth, max_len, NULL);
 }
 
 /**
@@ -1093,7 +1094,7 @@ static void ui_text_clip_middle_protect_right(uiFontStyle *fstyle, uiBut *but, c
        const float minwidth = (float)(UI_DPI_ICON_SIZE) / but->block->aspect * 2.0f;
 
        but->ofs = 0;
-       but->strwidth = ui_text_clip_middle_ex(fstyle, but->drawstr, okwidth, minwidth, max_len, rsep);
+       but->strwidth = UI_text_clip_middle_ex(fstyle, but->drawstr, okwidth, minwidth, max_len, rsep);
 }
 
 /**
@@ -4065,7 +4066,7 @@ void ui_draw_menu_item(uiFontStyle *fstyle, rcti *rect, const char *name, int ic
                const float minwidth = (float)(UI_DPI_ICON_SIZE);
 
                BLI_strncpy(drawstr, name, sizeof(drawstr));
-               ui_text_clip_middle_ex(fstyle, drawstr, okwidth, minwidth, max_len, NULL);
+               UI_text_clip_middle_ex(fstyle, drawstr, okwidth, minwidth, max_len, NULL);
 
                glColor4ubv((unsigned char *)wt->wcol.text);
                UI_fontstyle_draw(fstyle, rect, drawstr);
@@ -4140,7 +4141,7 @@ void ui_draw_preview_item(uiFontStyle *fstyle, rcti *rect, const char *name, int
                const float minwidth = (float)(UI_DPI_ICON_SIZE);
 
                BLI_strncpy(drawstr, name, sizeof(drawstr));
-               ui_text_clip_middle_ex(fstyle, drawstr, okwidth, minwidth, max_len, NULL);
+               UI_text_clip_middle_ex(fstyle, drawstr, okwidth, minwidth, max_len, NULL);
 
                glColor4ubv((unsigned char *)wt->wcol.text);
                UI_fontstyle_draw(fstyle, &trect, drawstr);
index d5b9c169192670cee4eb0943923037dc6bed783b..3553a0ed79a097d78cfad5a7ed8182bdc0e45e69 100644 (file)
@@ -303,7 +303,7 @@ static void file_draw_string(int sx, int sy, const char *string, float width, in
        fs.align = align;
 
        BLI_strncpy(fname, string, FILE_MAXFILE);
-       file_shorten_string(fname, width + 1.0f, 0);
+       UI_text_clip_middle_ex(&fs, fname, width + 1.0f, UI_DPI_ICON_SIZE, sizeof(fname), NULL);
 
        /* no text clipping needed, UI_fontstyle_draw does it but is a bit too strict (for buttons it works) */
        rect.xmin = sx;
index f1fd4e2b683dc050b573c96683fa6b25fb99c37d..dbb5e8a773dd9e2da6999649b1f2389b3d34ace6 100644 (file)
@@ -101,7 +101,6 @@ void file_operator_to_sfile(struct SpaceFile *sfile, struct wmOperator *op);
 
 
 /* filesel.c */
-float file_shorten_string(char *string, float w, int front);
 float file_string_width(const char *str);
 
 float file_font_pointsize(void);
index 82409c9ecb47088812f723bce29addd363d54467..29a8a06fa23bf6e62790361a9d4dc34eb09ce76a 100644 (file)
@@ -398,58 +398,6 @@ void ED_fileselect_layout_tilepos(FileLayout *layout, int tile, int *x, int *y)
        }
 }
 
-/* Shorten a string to a given width w. 
- * If front is set, shorten from the front,
- * otherwise shorten from the end. */
-float file_shorten_string(char *string, float w, int front)
-{      
-       char temp[FILE_MAX];
-       short shortened = 0;
-       float sw = 0;
-       float pad = 0;
-
-       if (w <= 0) {
-               *string = '\0';
-               return 0.0;
-       }
-
-       sw = file_string_width(string);
-       if (front == 1) {
-               const char *s = string;
-               BLI_strncpy(temp, "...", 4);
-               pad = file_string_width(temp);
-               while ((*s) && (sw + pad > w)) {
-                       s++;
-                       sw = file_string_width(s);
-                       shortened = 1;
-               }
-               if (shortened) {
-                       int slen = strlen(s);
-                       BLI_strncpy(temp + 3, s, slen + 1);
-                       temp[slen + 4] = '\0';
-                       BLI_strncpy(string, temp, slen + 4);
-               }
-       }
-       else {
-               const char *s = string;
-               while (sw > w) {
-                       int slen = strlen(string);
-                       string[slen - 1] = '\0';
-                       sw = file_string_width(s);
-                       shortened = 1;
-               }
-
-               if (shortened) {
-                       int slen = strlen(string);
-                       if (slen > 3) {
-                               BLI_strncpy(string + slen - 3, "...", 4);
-                       }
-               }
-       }
-       
-       return sw;
-}
-
 float file_string_width(const char *str)
 {
        uiStyle *style = UI_style_get();