pdf-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [pdf-devel] Patch for FS#116


From: gerel
Subject: Re: [pdf-devel] Patch for FS#116
Date: Sun, 18 Apr 2010 18:50:16 -0300

Here is try 2. Review and apply.

##
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: address@hidden
# target_branch: file:///home/gerel/PROJECTS/libgnupdf/trunk/
# testament_sha1: ef2e62b091722280c7473af3bcc5769214eadcfb
# timestamp: 2010-04-18 18:48:02 -0300
# base_revision_id: address@hidden
# 
# Begin patch
=== modified file 'ChangeLog'
--- ChangeLog   2010-04-18 11:13:22 +0000
+++ ChangeLog   2010-04-18 21:47:59 +0000
@@ -1,3 +1,11 @@
+2010-04-17  Gerardo E. Gidoni  <address@hidden>
+
+       Added new method pdf_text_get_printable().
+       * src/base/pdf-text.c: new method.
+       
+       * src/base/pdf-text.h: new method.
+
+
 2010-04-15  Jose E. Marchesi  <address@hidden>
 
        Remove spurious blank lines before EOF in the codebase.

=== modified file 'src/base/pdf-text.c'
--- src/base/pdf-text.c 2010-02-20 16:02:07 +0000
+++ src/base/pdf-text.c 2010-04-18 21:47:59 +0000
@@ -157,6 +157,8 @@
   /* Initialize all contents */
   (*text)->data = NULL;
   (*text)->size = 0;
+  (*text)->printable = NULL;
+  (*text)->modified = PDF_FALSE;
   memset(&((*text)->lang[0]), 0, PDF_TEXT_CCL);
   memset(&((*text)->country[0]), 0, PDF_TEXT_CCL);
 
@@ -183,6 +185,11 @@
       text->data = NULL;
     }
 
+  if(text->printable != NULL)
+    {
+      pdf_dealloc(text->printable);
+    }
+
   /* Destroy word boundaries list */
   pdf_text_destroy_word_boundaries_list(&text->word_boundaries);
 
@@ -224,7 +231,7 @@
       memcpy(element->country, text->country, (size_t) PDF_TEXT_CCL);
 
       /* We don't really need to duplicate the contents of the word
-       *  boundaries list, as it is a side product */
+       *  boundaries list, as it is a side product, same with printable */
 
       /* Set output element...*/
       return element;
@@ -1018,6 +1025,8 @@
 
       /* Update size of first element */
       text1->size += text2->size;
+
+      text1->modified = PDF_TRUE;
     }
 
   return PDF_OK;
@@ -1267,6 +1276,8 @@
           /* Dealloc list of pointers to replacements */
           pdf_dealloc(rep_ptrs);
         }
+
+      text->modified = PDF_TRUE;
     }
 
   return PDF_OK;
@@ -1389,16 +1400,42 @@
     }
 
   /* 0x01000000 */
-    if((filter & PDF_TEXT_FILTER_REMOVE_LINE_ENDINGS) && \
-       (pdf_text_filter_remove_line_endings(text) != PDF_OK))
+  if((filter & PDF_TEXT_FILTER_REMOVE_LINE_ENDINGS) && 
+     (pdf_text_filter_remove_line_endings(text) != PDF_OK))
     {
       PDF_DEBUG_BASE("Error applying Line Ending Removal filter");
       return PDF_ETEXTENC;
     }
 
+  text->modified = PDF_TRUE;
   return PDF_OK;
 }
 
+const pdf_char_t *
+pdf_text_get_printable (pdf_text_t text)
+{
+  pdf_size_t size;
+
+  if (text->printable != NULL){
+    if (text->modified == PDF_FALSE){
+      return text->printable;
+    }else{
+      pdf_dealloc(text->printable);
+    }
+  }
+
+#ifdef PDF_HOST_WIN32
+  pdf_text_get_unicode(&text->printable, &size, text, PDF_TEXT_UTF16_LE,
+                       PDF_TEXT_UNICODE_WITH_NUL_SUFFIX);
+#else
+  pdf_text_get_unicode(&text->printable, &size, text, PDF_TEXT_UTF8,
+                       PDF_TEXT_UNICODE_WITH_NUL_SUFFIX);
+#endif /*PDF_HOST_WIN32*/
+
+  text->modified = PDF_FALSE;
+
+  return text->printable;
+}
 
 
 pdf_i32_t
@@ -1638,6 +1675,12 @@
   memset(&(text->country[0]), 0, PDF_TEXT_CCL);
   /* Reset data size */
   text->size = 0;
+
+  text->modified = PDF_FALSE;
+  if (text->printable != NULL){
+    pdf_dealloc(text->printable);
+    text->printable = NULL;
+  }
 }
 
 

=== modified file 'src/base/pdf-text.h'
--- src/base/pdf-text.h 2010-02-20 16:02:07 +0000
+++ src/base/pdf-text.h 2010-04-17 22:49:14 +0000
@@ -301,6 +301,9 @@
 pdf_text_filter (pdf_text_t text,
                  const pdf_u32_t filter);
 
+/* Returns a read-only string to be used with printf's "%s" like format */
+const pdf_char_t *
+pdf_text_get_printable (pdf_text_t text);
 
 /* ------------------------- Text Comparison -------------------------------- 
*/
 
@@ -328,6 +331,8 @@
   pdf_list_t word_boundaries;       /* List of Word boundaries (optional) */
   pdf_char_t lang[PDF_TEXT_CCL];    /* Associated language code (optional) */
   pdf_char_t country[PDF_TEXT_CCL]; /* Associated country code (optional) */
+  pdf_bool_t modified;  /* set to PDF_TRUE each time the data is modified */
+  pdf_char_t * printable;
 };
 
 /* Structure containing the word boundary information */

# Begin bundle
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
FCQM58S7AA==

###

-gerel




reply via email to

[Prev in Thread] Current Thread [Next in Thread]