[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 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
IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWTOfEuwABgZ/gHgwCAB79///
f+/fxL////pgCj96UzWAAAAM8wpQ6DSgUABkgFTYUZDIaM1PUD1APUGjIAMg0DQAOYTRkaGhkMI0
Mhpo0AGIyZAMIBgEkpkQmQ9BMTEaBkyMhoaGgGQAA000BiKZFNBhPUNAD0mmgAaAAAD1AAA5hNGR
oaGQwjQyGmjQAYjJkAwgGASRAQBMgINTCMpkTyT00hhBo2o0Bp6jJ7VJUEmRqUc72h5cjuOPOPX2
ddpQ5NPB099syI3a3+LbfUNCmRUUVoj+F7WR53NUVLRUJ5Gd7asSsO2UxnmL1b+BRtrEI+Ms4Z8L
ElNkGWTiJwGLbCE1I2zaUazkWzo8BzwIF2PEQedgETBEP7X1igNVX4dA5wNQWIjwPwWpaElwik5Q
mTABIpAJFIr2rkCaSQkO4b2RvOl4N0TcgyG5WJPDfSsZcpVT0JEnUxitkilJSp0Uey2MJ5/iamqX
dHv9qDe3M4qcF1x6iUoVLqA6n6GESWfOpaT8IRiyGm4J1kQaEDShxVUkiY8nIcyChIoMLjOHgiGM
7EsRPBnszTKraItieIaUqYYBLNGNZCT1o2mr5YAjKwIOecPMiEiN40WSgi4cKlBXRqCU0X7GeMIw
KEXqFSHwDBAURjjpUlwUrK3h0qWq5DLr7A+c3HmcUAktwdpAiDJC7gyVvBu9hOyCIHceJAgKw7/F
WBpkkvSc0RU7227bq3pH5gB8oefoS3nj47dnJO7hCJsokNq6RgwuDLcw6ZgQSQpEnEBBhh29RCIa
DhGkxoBIT8VCP7qJJRN7A6wqcjkW2lAoH6D5iuBFBOdFNzligojAuPV64FZUuHNkqnwCAvJJe0K7
TcgxYLqOonOWRMQGCy1KlT3Bmd5uUw1FYFBhTKE6jFg9122nXi5w5GOAfelcS2pJ0OgYWIH5mZcj
C3oKGQ0Wwb8CBia52JoCtSVIFpYkqB+uYLYUm7nHnQvFG0cCpcbBjREczLI1n1ct4HSBijVjRrsY
2sVUAvVJ7ELuZAEjlNJt80rDpA3myARNUllstKkTQ5k6A1WYbBJM4mGa12HUHM65BDqbgcOTl1oQ
3kTSgi/HMwMdCQwxmQ7lkTxt1pa2Ms4ReLDjKER21sLyZf69g0S8NMy4V26ZNQHiwQMIK6F71hkX
2N0l90yp0j5Zhh5BS9oZEOKjGqSjVxLFpQkklaYki4YwZytjSPBeZsxwhuJVAuHUhR0PQGWwGSVQ
ySzYnQ4bTcviktAxuvHzpCt9COFRRcM6JkpksBowlsDoJl0bTHbdjFSLescyAuLUjZgWlxM0tIhi
YYZmx9llGMi7pE8KcIUvMoGUcJ0e9//LQmVqQOeehpxPEoBUllYWkS+DlqgtmMDc0mjGG4ZSHA4b
bpVMBxQAq6ScjaRttQnKvHAK016FMWwvQTLxi1bFkXFwT11Iki1aHIuSWbGzbo17PFd9uLIwYWa5
EwW4uHL5sTNSZLbIfAbjq5hBqyctpPSY+p5FKZ3foDaRMS1/SkumIWXvpnnKGjinMIgOKNus5pJ5
TJ1qdNS9P4AQHIyqahaOBYvsFrnfdiOqDMNsGV4WkTJKEy4TgIOTEMQEIBQJmBEswQwdQDVCTIq6
6cPPokZJQ6yw4UWRwNYSkyh0UghbLIJyjDZuC6RAbQIplVJMDJDBYDhtE0JiYZJhqHwEw+gxgi8Z
OfHVoOemJeQP0xJEoymQjGHqEJQxQHgihcRUyASPiYFCRAiZyRRWI/INRzIwKERxgiEzBDH5g0TM
c0KnxNhVH8WXwBkpGhUGDAj8TYEyYw46DJYnA4kQ/og5GgMZpRStGCpggwY3hkexxoBtIVLiJmRQ
qIHGBKlsiTFkYSgRiwa7hET1sRPHpDBGXjevShL5vnIG6X2kI+5uv1S9+AIvKGXve6DvEh9e02iP
fFQ3otJGoqMvIRC8A92/NEggx/D7AhsOWIRNCUko8xJIaS4yIhJzGdhU8EWXVC+sbCR4E/CoApjv
rA7XGO4x7jftw7TkS4HGzGwHPuLhj37zE6R12mojv6zU6FOKNpxOvFYd4LoTVTnHImbLNPMVH4Bx
KGQwXjcTcBeXIOROJj90LAUeddvQTMyz6lZtWW84K5dJ18bvOjEi6BctHSvQP142AxEn4geDEYJd
aqiiwgUF5UQgXfjtZhJrC2OoNDoTLTLFdBYjO/rwOw7stNEyNUTLkekYfQ6aIcR7692vRsXUBm63
7zdKRakpmv3neXcnLCdTz6FFz2lOxytn4kAoIW4Py+F4GIiUfQ6WgmQdJexyb9twJcYB4HFbuYSm
A6LT6fBOkTRYCSkUqGsXWCOR4DnyDczpPE7yQ34HookHNWl06GA6Xj4wumAfFHzI+RHqV61N4ZhY
BiaJioobhVBgcAFweMIYJHsNAZOJh0w+SwA8gAup7TmcfamMTsSUIJDiXvHSlf4gewCCLeKEdJ/k
W8JLmuBRGZPBZ9pxXQRSS/WKLLbgAIeCQIJCIrwh86KQyEdvUcCRkkWHBIsfwNxIRHqXf7FaI8Ul
mdbIY8FOHIRzA5iL0i8czTABh8oFiGQMhkyNljejUZfSWqwVE52EAOxhHIUqC2jlqGIgbzEcXpCX
tSaywsSsoVDBdonSqihMRKo8jzTRAmJo0KJ6sVSkhDCZkHsABxYCt83YQD3AGqZHUoILj7CQbjks
aF6R7S/ZE6LliItgBGLccKXFGqNIZDILpdZnBbykFvUIBQEiYzVStM8Ormu0tcdMJ2GMTVe5JeBY
tobTsO10nQ6xEbyHnIpEgvaIzCFjEA3yxN46XJXABWte63ahExfsCgecW9TnYx616aFiXl8nfjJ/
LLgd4Y8DbtCwbxuRDXhOU0lAZkzG1EcUj8k8BXBeyGgWmZRyoiLUV5J8BlPaBDpdAWDAqDIHRJDg
mUIAiRzkZGA30Bh5/6ji5tAPBlqoG03gww09EERDFplqR0RodGhHcDG0RUXqSTvJkFhYnADqB1xM
zrV+St4LDMlzSV4oAXJH6lcvnFBEhfAsPqSBxcFIElqWsFwdh6xfQkuXBIqfac3fxhk7Of/F3JFO
FCQM58S7AA==
###
-gerel