X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpango-select.cc;h=a0cf0aaee3e8210ccb0155dfcccb6b2d385d72e5;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=ed4b7579d4da6fc21f2c4a413ab7d55867d0d65e;hpb=87eedcd59f4082cb0841528ad5bc82cb1d1191e3;p=lilypond.git diff --git a/lily/pango-select.cc b/lily/pango-select.cc index ed4b7579d4..a0cf0aaee3 100644 --- a/lily/pango-select.cc +++ b/lily/pango-select.cc @@ -1,13 +1,25 @@ /* - pango-select.cc -- implement lily font selection for Pango_fonts. + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 2004--2015 Han-Wen Nienhuys - (c) 2004--2007 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . */ #include "dimensions.hh" #include "all-font-metrics.hh" +#include "libc-extension.hh" #include "output-def.hh" #include "pango-font.hh" @@ -25,25 +37,26 @@ properties_to_pango_description (SCM chain, Real text_size) else { SCM family = ly_chain_assoc_get (ly_symbol2scm ("font-family"), chain, - SCM_BOOL_F); + SCM_BOOL_F); SCM variant = ly_chain_assoc_get (ly_symbol2scm ("font-shape"), chain, - SCM_BOOL_F); + SCM_BOOL_F); SCM style = ly_chain_assoc_get (ly_symbol2scm ("font-shape"), chain, - SCM_BOOL_F); + SCM_BOOL_F); SCM weight = ly_chain_assoc_get (ly_symbol2scm ("font-series"), chain, - SCM_BOOL_F); + SCM_BOOL_F); description - = symbols_to_pango_font_description (family, style, variant, weight, - SCM_BOOL_F); + = symbols_to_pango_font_description (family, style, variant, weight, + SCM_BOOL_F); } Real step = robust_scm2double (ly_chain_assoc_get (ly_symbol2scm ("font-size"), chain, SCM_BOOL_F), - 0.0); + 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 (my_round (size * PANGO_SCALE))); return description; } @@ -52,12 +65,13 @@ 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"))); + point_constant + * layout->get_dimension (ly_symbol2scm ("text-font-size"))); char *str = pango_font_description_to_string (pfd); SCM scm_str = scm_from_locale_string (str); g_free (str); + pango_font_description_free (pfd); return find_pango_font (layout, scm_str, 1.0); } @@ -69,7 +83,7 @@ symbol_to_pango_style (SCM style) if (style == ly_symbol2scm ("italic")) pstyle = PANGO_STYLE_ITALIC; else if (style == ly_symbol2scm ("oblique") - || style == ly_symbol2scm ("slanted")) + || style == ly_symbol2scm ("slanted")) pstyle = PANGO_STYLE_OBLIQUE; return pstyle; @@ -125,10 +139,10 @@ symbol_to_pango_stretch (SCM) // stretch) PangoFontDescription * symbols_to_pango_font_description (SCM family, - SCM style, - SCM variant, - SCM weight, - SCM stretch) + SCM style, + SCM variant, + SCM weight, + SCM stretch) { PangoFontDescription *description = pango_font_description_new (); @@ -139,15 +153,15 @@ symbols_to_pango_font_description (SCM family, family_str = ly_scm2string (family); pango_font_description_set_family (description, - family_str.c_str ()); + family_str.c_str ()); pango_font_description_set_style (description, - symbol_to_pango_style (style)); + symbol_to_pango_style (style)); pango_font_description_set_variant (description, - symbol_to_pango_variant (variant)); + symbol_to_pango_variant (variant)); pango_font_description_set_weight (description, - symbol_to_pango_weight (weight)); + symbol_to_pango_weight (weight)); pango_font_description_set_stretch (description, - symbol_to_pango_stretch (stretch)); + symbol_to_pango_stretch (stretch)); return description; }