1 /* 2 This file is part of LilyPond, the GNU music typesetter. 3 4 Copyright (C) 1998--2021 Han-Wen Nienhuys <hanwen@xs4all.nl> 5 Jan Nieuwenhuizen <janneke@gnu.org> 6 7 LilyPond is free software: you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation, either version 3 of the License, or 10 (at your option) any later version. 11 12 LilyPond is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with LilyPond. If not, see <http://www.gnu.org/licenses/>. 19 */ 20 21 #ifndef TEXT_ITEM 22 #define TEXT_ITEM 23 24 #include "stencil.hh" 25 #include "grob-interface.hh" 26 27 class Text_interface 28 { 29 public: 30 DECLARE_SCHEME_CALLBACK (print, (SCM)); 31 static Stencil print (Grob *); 32 33 DECLARE_SCHEME_CALLBACK (interpret_markup, (SCM, SCM, SCM)); 34 static Stencil interpret_markup (Output_def *layout, SCM props, SCM markup); 35 36 DECLARE_SCHEME_CALLBACK (interpret_string, (SCM, SCM, SCM)); 37 38 static bool is_markup (SCM); 39 static bool is_markup_list (SCM); 40 41 private: 42 static SCM internal_interpret_markup (Output_def *, SCM, SCM); 43 static SCM internal_print (Grob *); 44 }; 45 46 #endif /* TEXT_ITEM */ 47