X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpango-select.cc;h=bd684b92f857344bb7f91ff02d41b3940da660a8;hb=2f19ea6bdfd30afec339c5695b9e2df4df755896;hp=dea3b9d40b42e85d708c492d2336cb6c79f72d7a;hpb=58bcc84c9480dae1b21bc24d8396b91fe19e0131;p=lilypond.git diff --git a/lily/pango-select.cc b/lily/pango-select.cc index dea3b9d40b..bd684b92f8 100644 --- a/lily/pango-select.cc +++ b/lily/pango-select.cc @@ -3,9 +3,8 @@ source file of the GNU LilyPond music typesetter - (c) 2004--2005 Han-Wen Nienhuys + (c) 2004--2006 Han-Wen Nienhuys */ -#include #include "dimensions.hh" #include "all-font-metrics.hh" @@ -15,13 +14,13 @@ PangoFontDescription * properties_to_pango_description (SCM chain, Real text_size) { - SCM name = ly_chain_assoc (ly_symbol2scm ("font-name"), chain); + SCM name = ly_chain_assoc_get (ly_symbol2scm ("font-name"), chain, SCM_BOOL_F); PangoFontDescription *description = 0; - if (scm_is_pair (name) && scm_is_string (scm_cdr (name))) + if (scm_is_string (name)) { - String name_str = ly_scm2string (scm_cdr (name)); - description = pango_font_description_from_string (name_str.to_str0 ()); + string name_str = ly_scm2string (name); + description = pango_font_description_from_string (name_str.c_str ()); } else { @@ -40,19 +39,21 @@ properties_to_pango_description (SCM chain, Real text_size) SCM_BOOL_F); } - Real step = robust_scm2double (ly_symbol2scm ("font-size"), 0.0); + Real step = robust_scm2double (ly_chain_assoc_get (ly_symbol2scm ("font-size"), chain, SCM_BOOL_F), + 0.0); Real size = text_size * pow (2.0, step / 6.0); - pango_font_description_set_size (description, - gint (size * PANGO_SCALE)); + pango_font_description_set_size (description, gint (size * PANGO_SCALE)); return description; } Font_metric * select_pango_font (Output_def *layout, SCM chain) { - PangoFontDescription *pfd = properties_to_pango_description (chain, - point_constant * layout->get_dimension (ly_symbol2scm ("text-font-size"))); + PangoFontDescription *pfd + = properties_to_pango_description (chain, + point_constant + * layout->get_dimension (ly_symbol2scm ("text-font-size"))); char *str = pango_font_description_to_string (pfd); SCM scm_str = scm_makfrom0str (str); @@ -66,14 +67,10 @@ symbol_to_pango_style (SCM style) { PangoStyle pstyle = PANGO_STYLE_NORMAL; if (style == ly_symbol2scm ("italic")) - { - pstyle = PANGO_STYLE_ITALIC; - } + pstyle = PANGO_STYLE_ITALIC; else if (style == ly_symbol2scm ("oblique") || style == ly_symbol2scm ("slanted")) - { - pstyle = PANGO_STYLE_OBLIQUE; - } + pstyle = PANGO_STYLE_OBLIQUE; return pstyle; } @@ -83,9 +80,7 @@ symbol_to_pango_variant (SCM variant) { PangoVariant pvariant = PANGO_VARIANT_NORMAL; if (variant == ly_symbol2scm ("caps")) - { - pvariant = PANGO_VARIANT_SMALL_CAPS; - } + pvariant = PANGO_VARIANT_SMALL_CAPS; return pvariant; } @@ -94,25 +89,15 @@ symbol_to_pango_weight (SCM weight) { PangoWeight pw = PANGO_WEIGHT_NORMAL; if (weight == ly_symbol2scm ("bold")) - { - pw = PANGO_WEIGHT_BOLD; - } + pw = PANGO_WEIGHT_BOLD; if (weight == ly_symbol2scm ("heavy")) - { - pw = PANGO_WEIGHT_HEAVY; - } + pw = PANGO_WEIGHT_HEAVY; if (weight == ly_symbol2scm ("ultrabold")) - { - pw = PANGO_WEIGHT_ULTRABOLD; - } + pw = PANGO_WEIGHT_ULTRABOLD; if (weight == ly_symbol2scm ("light")) - { - pw = PANGO_WEIGHT_LIGHT; - } + pw = PANGO_WEIGHT_LIGHT; if (weight == ly_symbol2scm ("ultralight")) - { - pw = PANGO_WEIGHT_ULTRALIGHT; - } + pw = PANGO_WEIGHT_ULTRALIGHT; return pw; } @@ -147,14 +132,14 @@ symbols_to_pango_font_description (SCM family, { PangoFontDescription *description = pango_font_description_new (); - String family_str = "roman"; + string family_str = "roman"; if (scm_is_symbol (family)) family_str = ly_symbol2string (family); else if (scm_is_string (family)) family_str = ly_scm2string (family); pango_font_description_set_family (description, - family_str.to_str0 ()); + family_str.c_str ()); pango_font_description_set_style (description, symbol_to_pango_style (style)); pango_font_description_set_variant (description,