/[mldonkey]/mldonkey/src/gtk2/gui/guiTools.ml
ViewVC logotype

Diff of /mldonkey/src/gtk2/gui/guiTools.ml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3 by spiralvoice, Mon May 2 12:57:59 2005 UTC revision 1.4 by spiralvoice, Tue Jul 12 23:10:16 2005 UTC
# Line 432  let color_of_name name = Line 432  let color_of_name name =
432  *)  *)
433    
434  let fit_string_to_pixels s ~context ~pixels =  let fit_string_to_pixels s ~context ~pixels =
435      let us = U.utf8_of s in
436    let pango_layout = Pango.Layout.create context#as_context in    let pango_layout = Pango.Layout.create context#as_context in
437    Pango.Layout.set_text pango_layout s;    Pango.Layout.set_text pango_layout us;
438    let s' =    let us' =
439      if fst (Pango.Layout.get_pixel_size pango_layout) <= pixels      if fst (Pango.Layout.get_pixel_size pango_layout) <= pixels
440      then s      then us
441      else begin      else begin
442        let len = String.length s in        let len = Glib.Utf8.length us in
443        let ext = "..." ^ (String.sub s (len - 7) 7) in        let uca = Glib.Utf8.to_unistring us in
444        let rec adjust_string str n len =        let uca_ext = Array.sub uca (len - 7) 7 in
445          let ext = "..." ^ (Glib.Utf8.from_unistring uca_ext) in
446          let rec adjust_string n len =
447          if n = len          if n = len
448            then str            then us
449            else begin            else begin
450              let str' = U.utf8_of ((String.sub str 0 n) ^ ext) in              let ustr = (Glib.Utf8.from_unistring (Array.sub uca 0 n)) ^ ext in
451              Pango.Layout.set_text pango_layout str';              Pango.Layout.set_text pango_layout ustr;
452              let str_pixels = fst (Pango.Layout.get_pixel_size pango_layout) in              let ustr_pixels = fst (Pango.Layout.get_pixel_size pango_layout) in
453              (* Printf.printf "width %d - Pango.Layout.get_pixel_size %d Pango.Layout.get_text %s\n"              (* Printf.printf "width %d - Pango.Layout.get_pixel_size %d Pango.Layout.get_text %s\n"
454                 pixels s_width (Pango.Layout.get_text pango_layout);                 pixels s_width (Pango.Layout.get_text pango_layout);
455              flush stdout; *)              flush stdout; *)
456              if str_pixels < pixels              if ustr_pixels < pixels
457                then adjust_string str (n + 1) len                then adjust_string (n + 1) len
458                else str'                else ustr
459            end            end
460        in        in
461        adjust_string s 0 len        adjust_string 0 len
462      end      end
463    in s'    in us'
464    
465    
466    

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26