/[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.4 by spiralvoice, Tue Jul 12 23:10:16 2005 UTC revision 1.5 by spiralvoice, Mon Oct 31 18:34:02 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    if s = ""
436    let pango_layout = Pango.Layout.create context#as_context in      then s
   Pango.Layout.set_text pango_layout us;  
   let us' =  
     if fst (Pango.Layout.get_pixel_size pango_layout) <= pixels  
     then us  
437      else begin      else begin
438        let len = Glib.Utf8.length us in        let us = U.utf8_of s in
439        let uca = Glib.Utf8.to_unistring us in        let pango_layout = Pango.Layout.create context#as_context in
440        let uca_ext = Array.sub uca (len - 7) 7 in        Pango.Layout.set_text pango_layout us;
441        let ext = "..." ^ (Glib.Utf8.from_unistring uca_ext) in        let us' =
442        let rec adjust_string n len =          if fst (Pango.Layout.get_pixel_size pango_layout) <= pixels
443          if n = len          then us
444            then us          else begin
445            else begin            let len = Glib.Utf8.length us in
446              let ustr = (Glib.Utf8.from_unistring (Array.sub uca 0 n)) ^ ext in            let uca = Glib.Utf8.to_unistring us in
447              Pango.Layout.set_text pango_layout ustr;            let ext_len = min 7 (len - 1) in
448              let ustr_pixels = fst (Pango.Layout.get_pixel_size pango_layout) in            let uca_ext = Array.sub uca (len - ext_len) ext_len in
449              (* Printf.printf "width %d - Pango.Layout.get_pixel_size %d Pango.Layout.get_text %s\n"            let ext = "..." ^ (Glib.Utf8.from_unistring uca_ext) in
450                 pixels s_width (Pango.Layout.get_text pango_layout);            let rec adjust_string n len =
451              flush stdout; *)              if n = len
452              if ustr_pixels < pixels                then us
453                then adjust_string (n + 1) len                else begin
454                else ustr                  let ustr = (Glib.Utf8.from_unistring (Array.sub uca 0 n)) ^ ext in
455            end                  Pango.Layout.set_text pango_layout ustr;
456        in                  let ustr_pixels = fst (Pango.Layout.get_pixel_size pango_layout) in
457        adjust_string 0 len                  if ustr_pixels < pixels
458                      then adjust_string (n + 1) len
459                      else ustr
460                  end
461              in
462              adjust_string 0 len
463            end
464          in us'
465      end      end
   in us'  
   
466    
467    
468  let warning_box  let warning_box

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

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