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 19:02:57 -0300

 > Date: Sun, 18 Apr 2010 13:02:32 +0200 (CEST)
 > From: Jose E. Marchesi <address@hidden>
 > 
 > 
 >        /* 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))
 > 
 > Please don't write those backslashes in the code.  They are useless.
 > 
 >     +  if (text->printable != NULL){
 >     +    if (text->modified == PDF_FALSE){
 >     +      return text->printable;
 >     +    }else{
 >     +      pdf_dealloc(text->printable);
 >     +    }
 >     +  }
 > 
 > http://www.gnu.org/prep/standards/standards.html#Formatting

Ok. Here is a patch with Aleks' fixes and formatting standards.

##
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: address@hidden
# target_branch: file:///home/gerel/PROJECTS/libgnupdf/trunk/
# testament_sha1: d9d08026b881b338443d8f01871f0fa8b1792db2
# timestamp: 2010-04-18 19:01:37 -0300
# base_revision_id: address@hidden
# 
# Begin patch
=== modified file 'ChangeLog'
--- ChangeLog   2010-04-18 11:13:22 +0000
+++ ChangeLog   2010-04-18 22:01:34 +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 22:01:34 +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");
+      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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
JFOFCQocfuNg

###

-gerel




reply via email to

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