CVSROOT:        /cvsroot/lilypond
Module name:    lilypond
Branch:         
Changes by:     Han-Wen Nienhuys <[EMAIL PROTECTED]>    05/05/02 22:27:25

Modified files:
        .              : ChangeLog 
        lily           : open-type-font-scheme.cc open-type-font.cc 
        lily/include   : open-type-font.hh 

Log message:
        (LY_DEFINE):
        new function ly:otf-font-table-data.

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/ChangeLog.diff?tr1=1.3527&tr2=1.3528&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/open-type-font-scheme.cc.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/open-type-font.cc.diff?tr1=1.35&tr2=1.36&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/open-type-font.hh.diff?tr1=1.16&tr2=1.17&r1=text&r2=text

Patches:
Index: lilypond/ChangeLog
diff -u lilypond/ChangeLog:1.3527 lilypond/ChangeLog:1.3528
--- lilypond/ChangeLog:1.3527   Mon May  2 19:15:12 2005
+++ lilypond/ChangeLog  Mon May  2 22:27:25 2005
@@ -1,3 +1,8 @@
+2005-05-03  Han-Wen Nienhuys  <[EMAIL PROTECTED]>
+
+       * lily/open-type-font-scheme.cc (LY_DEFINE):
+       new function ly:otf-font-table-data.
+
 2005-05-02  Han-Wen Nienhuys  <[EMAIL PROTECTED]>
 
        * mf/GNUmakefile ($(outdir)/lilypond.map): remove rule.
Index: lilypond/lily/include/open-type-font.hh
diff -u lilypond/lily/include/open-type-font.hh:1.16 
lilypond/lily/include/open-type-font.hh:1.17
--- lilypond/lily/include/open-type-font.hh:1.16        Wed Mar 16 19:19:15 2005
+++ lilypond/lily/include/open-type-font.hh     Mon May  2 22:27:25 2005
@@ -32,6 +32,7 @@
   SCM get_global_table () const;
   SCM get_char_table () const;
 
+  String get_otf_table (String tag) const;
   static SCM make_otf (String);
   virtual String font_name () const;
   virtual ~Open_type_font ();
Index: lilypond/lily/open-type-font-scheme.cc
diff -u lilypond/lily/open-type-font-scheme.cc:1.3 
lilypond/lily/open-type-font-scheme.cc:1.4
--- lilypond/lily/open-type-font-scheme.cc:1.3  Thu Mar 10 14:36:13 2005
+++ lilypond/lily/open-type-font-scheme.cc      Mon May  2 22:27:25 2005
@@ -34,3 +34,28 @@
   SCM sym = scm_string_to_symbol (glyph);
   return scm_hashq_ref (otf->get_char_table (), sym, SCM_EOL);
 }
+
+
+LY_DEFINE(ly_otf_font_table_data, "ly:otf-font-table-data", 2, 0, 0,
+         (SCM font, SCM tag),
+         "Extract a table @var{tag} from @var{font}.")
+{
+  Modified_font_metric *fm
+    = dynamic_cast<Modified_font_metric *> (unsmob_metrics (font));
+  
+  Open_type_font *otf = fm ? dynamic_cast<Open_type_font *> (fm->original_font 
())
+    : dynamic_cast<Open_type_font *> (unsmob_metrics (font));
+
+
+  SCM_ASSERT_TYPE (otf, font, SCM_ARG1,  __FUNCTION__, "Open type font");
+  SCM_ASSERT_TYPE (scm_is_string (tag), tag, SCM_ARG1,  __FUNCTION__, "Open 
type font");
+
+  char ctag [5] = "    ";
+
+  String tag_string = ly_scm2string (tag);
+  strncpy (ctag, tag_string.to_str0 (), tag_string.length());
+
+  String tab = otf->get_otf_table (String (ctag));
+
+  return scm_from_locale_stringn ((char const*) tab.to_bytes (), tab.length 
());
+}
Index: lilypond/lily/open-type-font.cc
diff -u lilypond/lily/open-type-font.cc:1.35 
lilypond/lily/open-type-font.cc:1.36
--- lilypond/lily/open-type-font.cc:1.35        Mon May  2 12:39:28 2005
+++ lilypond/lily/open-type-font.cc     Mon May  2 22:27:25 2005
@@ -37,6 +37,15 @@
   return 0;
 }
 
+String
+Open_type_font::get_otf_table (String tag) const
+{
+  FT_ULong len;
+  FT_Byte *tab = load_table (tag.to_str0 (), face_,  &len);
+  
+  return String (tab, len);
+}
+
 SCM
 load_scheme_table (char const *tag_str, FT_Face face)
 {


_______________________________________________
Lilypond-cvs mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/lilypond-cvs

Reply via email to