[Top][All Lists]
[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
IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWaHH7jYABmD/gHgwDAB79///
f+/fxL////pgCt97s01oABiVES1lRoAAAAARw0MmmhpkaGmRkGRkaGQGJoyaAMmRiGEomhDQxI0Q
jIAAAAAAAAaZG1Bw0MmmhpkaGmRkGRkaGQGJoyaAMmRiGGJJppNTTE9QyeoDT1GjQAAaNADQAaAB
w0MmmhpkaGmRkGRkaGQGJoyaAMmRiGEkQEAgEyanpoAI1TaZop6jaQBp6aIZGmR+qSqkDI1FHOto
efKdRu4x6JcLChuabuh2tg9khxqF5y0vYM+zEs1VHj+epaaM3O8vNUNQBHMHROdaU0GN6KWZ2o1Z
wLFzUZ6vq1ehaIHRVEKUcIRYUulcpSTKZqo1xG2lJlaVeA52kC/HUkjrYQKaBQ+7CsUg0hU/3uHO
QPbI+d5ogViH2r8lH7npLwRNcbGDEFIhBEJFX5gDPkT4EICQMxESManU8jOew31cnFyDIebrfcgf
dGs5VlVPQkSdWEnLIVmSpOdLWsthCWb8TSaUul49X+PcI5GOc3hWClxlvOalLbuCoTX9bCAld78Y
cpeJBXshBPCUZC2ApBFDf0Lje+xLPONXMHIhNdRQRWyeqBdQDp38Rs/Ocx0WnVg33yBKyBXLVH0X
60dkgKRhcRJFs16IBIF4Gc1hJB3TkBvYMbGUmRivA/scm9f3PkOXY4fiMRZfcSLDwwP2ex2/WeyC
hQnkzWhcJg284fSbDi4oBJbA6CBEGSF0hkrdrdTJOyF0HaOTFYdXarAz5JLvOKHAip3tq1SL0j9A
A9IdfKlsO2unLandwhEYyokNq0QQsWRBg2MtTDlEzubUoAgqhVIVgICLAUYdeA81QcIyHCIn2qi/
jRJKCTLCZuJlIlSgUDxPIsuIoJ1UrCdTKCCqNxvXZ9GER8CY0JnEDxDSLzSXkGGs5BLJkXZ6wHaR
xnnKCAyWapUqeQZ9xyKYbBWBQYUyhOqYsHuu2U4Yvq5NxliH2K0BgvJ60k4nQMlRv0M5eGN1u8on
GiwfMcwNWaqaArElSBYXpKgfCYLMUm7o3caF4oqhccgxoRqzmJI3VLGFi2Fs4mtqKAaFO3FC6WQB
IRtmk0hW2GcuIQDlAkYpLHdQtJmkrQ0FK2A0hjBJTeAmGa5yjke4mD3VXVqwJXA2XGyIlxokIYwU
KCmrmJtGidurRqW+Ghnvvezlcj2gMuqQ8iU6+QrzAFqSElqWCKQewDgUwZJNYt5Mvgty7hrvtLbD
SNSoVLjzBr8VkQ2rCNqSkBpndEVoyCxq1SSvIBeMsmnY2Yz9pwYvHDAliUwGUhYxsOwIZgZJMQqi
XqVdm642so2zsNiIkApDAdXW0ojRExmEVclMlmJjyjPLQHYVL5XE8r4KKs4HCBaWAtNS0qNcPHYG
WFb1ybK0kqpE3RFdHbaZji1DTSmBdJuJJlyWlxXWX7Z5CIFhClxtVvGIRGzcYJuAVR4xpWC5vbMV
IGTATxhaUHCXKiI8nJ8kHMrs8MiurlUxai9BoJmAxktSzlxnCe2cSRarDlLUlkxn0Z2wzRxaMprp
L6skYp7TlJgtYxCbEzSRwiPcNrm6e2komgi+eQ+g8y/vDQOYjv4JL0RC6x1JvqrZOQjEFAmzIiM4
kRK2XPuN2waVrh7xSEag8mccknlEdWRGg5KCqLtimASHk0Rol4oAxBKY6BiQ0kqiKVGM3iH6gZk7
JvKDODsO2RklDsAYcSLBGprCBZAQDIpBWiyCcUpezuPJDnggW03pJgZIYOsOr3dxoDBMMJmVdms3
wmNwBwoiHbPN/V4d7Wz0U4Mf6F57QSRxESopKkQsC8U1EURC4fYQSI8ImwmWkBh5kSFRWC/MNI5d
mMSpIcYJBQmJj9AYiZxzSWmwyP1ch7VDfP2OAsMyQKFB5sNGkLCwUccRoDOcptIh8xG81gxx1ASA
uGCwyEZZboDBnPa40A2kCwwImgiJUEQPiI3npAGPAZJOj+h8e2AicV3TiRQmRnPcR8vdYJeQ57j6
ocg3OO5JRsy9qrEAyirepMnBsuNXQjYFgEc16AMWORTJmwW3Y68xEcwB8Z7USCDHf/DODcNY2QRN
eNhaVKm1fWRImdjH+asQL0w3n2r4r/jJC+ZpinDkIcOZjpMeuJpv2HINHZAvodIWnUc5W8gfLYZH
aA/SaRHVwNRyqcRazacMVhmBbk1RzmJGevEnt5AmWHIYkEbjUBeXILCsTt2wsBR5t2qRke9aSrGW
s2CzK05tlvWjWMJLkzulegdb/sAysBiRTgGAyK9ro+Ue7QzkULwCqdDEOk+WWjaktI/Of1JKdnQc
gzFlbhznNhdlkmRmRMsDwGT5GsohxHqK9HRp25hZzlA0QWqJwlIuSUJm35HgXbnJk6nXpKKeopvc
ro/0QCghaw/P8sRHukR7B0tImQehXscrHwuBLdAO03LXxCU0DotMepOkTRuAtQgJlbBaYuYo7tg5
1m46zqJjcDuOFQF0cVfUxLEvH0wkAf+R4o7kf5G6Dm5YBYaQYzCY3qS8TeDBAANJEYQwSPWZwZOJ
h0w+SwQeYAXULQPvOBx9qYic6ShBIcS+Q6Ur2RXYIW0/AWoOcCa9C2FRZGgFj2wOCCdTl97LWx6X
AJeygIoifkI+MjV+FljDCF08DaTM6RcfQkWv3G0kkR5l2d6tEd6S4r3qW8RznawFyRcOZJgAv8AP
FBYhkJkMmRntGt0DC+BcK0VEOdJ0+qQjcKdRahy5DEQNhmHFmCXkk1isLErKFQxXUJ0qooTESr9T
EFM6aIgFBMRqVB7GKpSEJhMyD2AA4sRW8eogGoXwR6AgguOokFAOQ3rGpekeRPPE9FwYiPEAMwuW
Arp5kbNoyGQes9bNAPt9TMw/edA6TkiYzVStM2Bw4cQ6S5x0wh2GMjUvekuwtWsNZ0GOEFBgYTqA
jYQ7CKRIL2iMwhYkQDZLE2DpblcAFa16bdQhTF9QUDsFsU52Ma/pXbIDvsLkvPDw680385bjADrC
/cbNgWjd96Ia905TSUGZDNsRHJI/MHgK4L2Q0C0zlHKiItRXknwGU9giHBxIsGBUGSHRJDgmCEEC
kZpGSwGPeGHYfeOlxaCO5haQgajYDDDT0JERDFplpI6EaDl0EdYMahFRepJO+AE3QWlqcAPQDraZ
jmWGYLuRY5yS4pK8VyR71cvWKCIiYD2lh+1IHFpUUIDSXsFwc4EGPWL2pLdyAqn1nMzW3VWTD/F3
JFOFCQocfuNg
###
-gerel