pdf-devel
[Top][All Lists]
Advanced

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

[pdf-devel] Patch for FS#116


From: gerel
Subject: [pdf-devel] Patch for FS#116
Date: Sat, 17 Apr 2010 20:00:19 -0300

Hi GNUsuperblovers.

Here is a patch for FS#116. New pdf_text_get_printable.
Aleks, tell me if this was what you meant.

##
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: address@hidden
# target_branch: file:///home/gerel/PROJECTS/libgnupdf/trunk/
# testament_sha1: d607f174bf2b3c7d25e3829b7893806a5624acae
# timestamp: 2010-04-17 19:49:21 -0300
# base_revision_id: address@hidden
# 
# Begin patch
=== modified file 'ChangeLog'
--- ChangeLog   2010-04-15 15:58:08 +0000
+++ ChangeLog   2010-04-17 22:49:14 +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-17 22:49:14 +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_HE,
+                       PDF_TEXT_UNICODE_NO_OPTION);
+#else
+  pdf_text_get_unicode(&text->printable, &size, text, PDF_TEXT_UTF8,
+                       PDF_TEXT_UNICODE_NO_OPTION);
+#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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

###

cheers,

-gerel




reply via email to

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