Description: Improved image file handling
Improved code for creation of image files when RTF files containing
images processed
Origin: backport, http://hg.savannah.gnu.org/hgweb/unrtf/raw-rev/ba40e844a32a,
http://hg.savannah.gnu.org/hgweb/unrtf/raw-rev/0f3b6a2cc680
Forwarded: not-needed
Author: Salvatore Bonaccorso <carnil@debian.org>
Last-Update: 2015-01-26
Applied-Upstream: 0.21.7
--- a/src/convert.c
+++ b/src/convert.c
@@ -1876,6 +1876,17 @@ static int cmd_rtf (Word *w, int align,
return FALSE;
}
+/*========================================================================
+ * Name: cmd_shppict
+ * Purpose: Executes the \shppict command.
+ * Args: Word, paragraph align info, and numeric param if any.
+ * Returns: Flag, true only if rest of Words on line should be ignored.
+ *=======================================================================*/
+
+static int cmd_shppict (Word *w, int align, char has_param, int param)
+{
+ return FALSE;
+}
/*========================================================================
* Name: cmd_up
@@ -2311,7 +2322,28 @@ static int cmd_footerf (Word *w, int ali
* Returns: Flag, true only if rest of Words on line should be ignored.
*=======================================================================*/
-static int cmd_ignore (Word *w, int align, char has_param, int param) {
+static int cmd_ignore (Word *w, int align, char has_param, int param)
+{
+ return TRUE;
+}
+
+/*========================================================================
+ * Name: cmd_maybe_ignore
+ * Purpose: Dummy function to get rid of subgroups in most cases
+ * Args: Word, paragraph align info, and numeric param if any.
+ * Returns: Flag, true only if rest of Words on line should be ignored.
+ *=======================================================================*/
+
+static int cmd_maybe_ignore (Word *w, int align, char has_param, int param)
+{
+ char *s = NULL;
+ if(w->next)
+ {
+ s = word_string(w->next);
+ if(s && strcmp(s, "\\shppict") == 0)
+ return(FALSE);
+ }
+
return TRUE;
}
@@ -2334,7 +2366,8 @@ static int cmd_info (Word *w, int align,
* Returns: Flag, true only if rest of Words on line should be ignored.
*=======================================================================*/
-static int cmd_pict (Word *w, int align, char has_param, int param) {
+static int cmd_pict (Word *w, int align, char has_param, int param)
+{
within_picture=TRUE;
picture_width = picture_height = 0;
picture_type = PICT_WB;
@@ -2513,7 +2546,18 @@ typedef struct {
/* All of the possible commands that RTF might recognize. */
static HashItem hashArray_other [] = {
+/* 0.21.7
+ * the "*" command was ignored in earlier versions, but included pictures
+ * seem to often start with \*\shppict{\pict so if "*" is ignored, so is
+ * the picture, so I have defined a new function "cmd_maybe_ignore" which
+ * tests whether the next word is shppict and if so does not ignore what
+ * follows. On simple tests this seems to work. - daved
+ */
+#if 0
{ "*", cmd_ignore, NULL },
+#else
+ { "*", cmd_maybe_ignore, NULL },
+#endif
{ "-", cmd_optional_hyphen, "optional hyphen" },
{ "_", cmd_nonbreaking_hyphen, "nonbreaking hyphen" },
{ "~", cmd_nonbreaking_space, NULL },
@@ -2704,6 +2748,7 @@ static HashItem hashArray_s [] = {
{ "strikedl", &cmd_strikedl, NULL },
{ "stylesheet", &cmd_ignore, "style sheet" },
{ "shp", cmd_shp, "drawn shape" },
+ { "shppict", &cmd_shppict, "shppict wrapper" },
#if 0
{ "shading", NULL, NULL },
#endif