diff options
author | wlemb <wlemb> | 2004-06-29 07:11:00 +0000 |
---|---|---|
committer | wlemb <wlemb> | 2004-06-29 07:11:00 +0000 |
commit | 6e5ac034c3358b9519d887aa71233ddba406d1f9 (patch) | |
tree | 3918c663d3516e959782086e1512e89a0e0029e7 /src | |
parent | 76b6e459a0510b71d682115440719cc60336ac54 (diff) | |
download | groff-6e5ac034c3358b9519d887aa71233ddba406d1f9.tar.gz |
Implement new string-valued register `.sty' to return the current
style name.
* env.cpp (environment::get_style_name_string): New function.
(init_env_requests): Add `.sty' register.
* env.h (environment): Updated.
* node.cpp (font_info): Make `get_style_name' a friend.
(get_style_name): New function.
* node.h: Updated.
* man/groff_diff.man, man/groff.man, NEWS, doc/groff.texinfo:
Updated.
Diffstat (limited to 'src')
-rw-r--r-- | src/roff/troff/env.cpp | 7 | ||||
-rw-r--r-- | src/roff/troff/env.h | 1 | ||||
-rw-r--r-- | src/roff/troff/node.cpp | 9 | ||||
-rw-r--r-- | src/roff/troff/node.h | 1 |
4 files changed, 18 insertions, 0 deletions
diff --git a/src/roff/troff/env.cpp b/src/roff/troff/env.cpp index b0234065..f002a28b 100644 --- a/src/roff/troff/env.cpp +++ b/src/roff/troff/env.cpp @@ -3109,6 +3109,12 @@ const char *environment::get_font_name_string() return f.contents(); } +const char *environment::get_style_name_string() +{ + symbol f = get_style_name(fontno); + return f.contents(); +} + const char *environment::get_name_string() { return name.contents(); @@ -3271,6 +3277,7 @@ void init_env_requests() init_int_env_reg(".ss", get_space_size); init_int_env_reg(".sss", get_sentence_space_size); init_string_env_reg(".sr", get_requested_point_size_string); + init_string_env_reg(".sty", get_style_name_string); init_string_env_reg(".tabs", get_tabs); init_int_env_reg(".u", get_fill); init_vunits_env_reg(".v", get_vertical_spacing); diff --git a/src/roff/troff/env.h b/src/roff/troff/env.h index ab71222f..6fb9cbdf 100644 --- a/src/roff/troff/env.h +++ b/src/roff/troff/env.h @@ -309,6 +309,7 @@ public: const char *get_fill_color_string(); const char *get_font_family_string(); const char *get_font_name_string(); + const char *get_style_name_string(); const char *get_name_string(); const char *get_point_size_string(); const char *get_requested_point_size_string(); diff --git a/src/roff/troff/node.cpp b/src/roff/troff/node.cpp index e3d4d86d..02624a3a 100644 --- a/src/roff/troff/node.cpp +++ b/src/roff/troff/node.cpp @@ -151,6 +151,7 @@ public: int is_special(); int is_style(); friend symbol get_font_name(int, environment *); + friend symbol get_style_name(int); }; class tfont_spec { @@ -399,6 +400,14 @@ symbol get_font_name(int fontno, environment *env) return f; } +symbol get_style_name(int fontno) +{ + if (font_table[fontno]->is_style()) + return font_table[fontno]->get_name(); + else + return EMPTY_SYMBOL; +} + hunits font_info::get_space_width(font_size fs, int space_sz) { if (is_constant_spaced == CONSTANT_SPACE_NONE) diff --git a/src/roff/troff/node.h b/src/roff/troff/node.h index 8da5671b..7baef298 100644 --- a/src/roff/troff/node.h +++ b/src/roff/troff/node.h @@ -596,4 +596,5 @@ public: font_family *lookup_family(symbol); symbol get_font_name(int, environment *); +symbol get_style_name(int); extern search_path include_search_path; |