poppler 2.2.0-x86-mingw32 → 2.2.1-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +5 -5
  3. data/ext/poppler/extconf.rb +1 -1
  4. data/lib/2.0/poppler.so +0 -0
  5. data/test/test_annotation.rb +3 -1
  6. data/test/test_page.rb +0 -18
  7. data/vendor/local/bin/cjpeg.exe +0 -0
  8. data/vendor/local/bin/djpeg.exe +0 -0
  9. data/vendor/local/bin/jpegtran.exe +0 -0
  10. data/vendor/local/bin/libjpeg-9.dll +0 -0
  11. data/vendor/local/bin/{libpoppler-44.dll → libpoppler-46.dll} +0 -0
  12. data/vendor/local/bin/libpoppler-cpp-0.dll +0 -0
  13. data/vendor/local/bin/libpoppler-glib-8.dll +0 -0
  14. data/vendor/local/bin/libsqlite3-0.dll +0 -0
  15. data/vendor/local/bin/pdfdetach.exe +0 -0
  16. data/vendor/local/bin/pdffonts.exe +0 -0
  17. data/vendor/local/bin/pdfimages.exe +0 -0
  18. data/vendor/local/bin/pdfinfo.exe +0 -0
  19. data/vendor/local/bin/pdfseparate.exe +0 -0
  20. data/vendor/local/bin/pdftocairo.exe +0 -0
  21. data/vendor/local/bin/pdftohtml.exe +0 -0
  22. data/vendor/local/bin/pdftoppm.exe +0 -0
  23. data/vendor/local/bin/pdftops.exe +0 -0
  24. data/vendor/local/bin/pdftotext.exe +0 -0
  25. data/vendor/local/bin/pdfunite.exe +0 -0
  26. data/vendor/local/bin/rdjpgcom.exe +0 -0
  27. data/vendor/local/bin/sqlite3.exe +0 -0
  28. data/vendor/local/bin/wrjpgcom.exe +0 -0
  29. data/vendor/local/include/jconfig.h +7 -1
  30. data/vendor/local/include/jmorecfg.h +68 -12
  31. data/vendor/local/include/jpeglib.h +19 -12
  32. data/vendor/local/include/poppler/cpp/poppler-document.h +104 -0
  33. data/vendor/local/include/poppler/cpp/poppler-embedded-file.h +55 -0
  34. data/vendor/local/include/poppler/cpp/poppler-font.h +91 -0
  35. data/vendor/local/include/poppler/cpp/poppler-global.h +111 -0
  36. data/vendor/local/include/poppler/cpp/poppler-image.h +71 -0
  37. data/vendor/local/include/poppler/cpp/poppler-page-renderer.h +66 -0
  38. data/vendor/local/include/poppler/cpp/poppler-page-transition.h +82 -0
  39. data/vendor/local/include/poppler/cpp/poppler-page.h +76 -0
  40. data/vendor/local/include/poppler/cpp/poppler-rectangle.h +84 -0
  41. data/vendor/local/include/poppler/cpp/poppler-toc.h +74 -0
  42. data/vendor/local/include/poppler/cpp/poppler-version.h +39 -0
  43. data/vendor/local/include/poppler/glib/poppler-annot.h +64 -0
  44. data/vendor/local/include/poppler/glib/poppler-enums.h +34 -0
  45. data/vendor/local/include/poppler/glib/poppler-features.h +1 -1
  46. data/vendor/local/include/poppler/glib/poppler-media.h +1 -1
  47. data/vendor/local/include/poppler/glib/poppler-page.h +61 -0
  48. data/vendor/local/include/poppler/glib/poppler-structure-element.h +357 -0
  49. data/vendor/local/include/poppler/glib/poppler.h +11 -1
  50. data/vendor/local/include/sqlite3.h +245 -89
  51. data/vendor/local/lib/girepository-1.0/Poppler-0.18.typelib +0 -0
  52. data/vendor/local/lib/libjpeg.a +0 -0
  53. data/vendor/local/lib/libjpeg.dll.a +0 -0
  54. data/vendor/local/lib/libjpeg.la +2 -2
  55. data/vendor/local/lib/libpoppler-cpp.a +0 -0
  56. data/vendor/local/lib/libpoppler-cpp.dll.a +0 -0
  57. data/vendor/local/lib/libpoppler-cpp.la +41 -0
  58. data/vendor/local/lib/libpoppler-glib.a +0 -0
  59. data/vendor/local/lib/libpoppler-glib.dll.a +0 -0
  60. data/vendor/local/lib/libpoppler-glib.la +2 -2
  61. data/vendor/local/lib/libpoppler.a +0 -0
  62. data/vendor/local/lib/libpoppler.dll.a +0 -0
  63. data/vendor/local/lib/libpoppler.la +4 -4
  64. data/vendor/local/lib/libsqlite3.a +0 -0
  65. data/vendor/local/lib/libsqlite3.dll.a +0 -0
  66. data/vendor/local/lib/libsqlite3.la +1 -1
  67. data/vendor/local/lib/pkgconfig/poppler-cairo.pc +2 -2
  68. data/vendor/local/lib/pkgconfig/poppler-cpp.pc +13 -0
  69. data/vendor/local/lib/pkgconfig/poppler-glib.pc +2 -2
  70. data/vendor/local/lib/pkgconfig/poppler-splash.pc +2 -2
  71. data/vendor/local/lib/pkgconfig/poppler.pc +1 -1
  72. data/vendor/local/lib/pkgconfig/sqlite3.pc +2 -2
  73. data/vendor/local/share/gir-1.0/Poppler-0.18.gir +2993 -169
  74. data/vendor/local/share/gtk-doc/html/poppler/PopplerAnnot.html +2674 -1137
  75. data/vendor/local/share/gtk-doc/html/poppler/PopplerAttachment.html +186 -133
  76. data/vendor/local/share/gtk-doc/html/poppler/PopplerDocument.html +2523 -1782
  77. data/vendor/local/share/gtk-doc/html/poppler/PopplerFormField.html +1071 -738
  78. data/vendor/local/share/gtk-doc/html/poppler/PopplerLayer.html +225 -146
  79. data/vendor/local/share/gtk-doc/html/poppler/PopplerMedia.html +276 -201
  80. data/vendor/local/share/gtk-doc/html/poppler/PopplerMovie.html +142 -101
  81. data/vendor/local/share/gtk-doc/html/poppler/PopplerPage.html +2191 -1421
  82. data/vendor/local/share/gtk-doc/html/poppler/PopplerStructureElement.html +3781 -0
  83. data/vendor/local/share/gtk-doc/html/poppler/annotation-glossary.html +30 -44
  84. data/vendor/local/share/gtk-doc/html/poppler/api-index-0-12.html +34 -39
  85. data/vendor/local/share/gtk-doc/html/poppler/api-index-0-14.html +27 -32
  86. data/vendor/local/share/gtk-doc/html/poppler/api-index-0-16.html +50 -55
  87. data/vendor/local/share/gtk-doc/html/poppler/api-index-0-18.html +23 -28
  88. data/vendor/local/share/gtk-doc/html/poppler/api-index-0-20.html +12 -15
  89. data/vendor/local/share/gtk-doc/html/poppler/api-index-0-22.html +18 -23
  90. data/vendor/local/share/gtk-doc/html/poppler/api-index-deprecated.html +12 -15
  91. data/vendor/local/share/gtk-doc/html/poppler/api-index-full.html +762 -280
  92. data/vendor/local/share/gtk-doc/html/poppler/ch01.html +12 -9
  93. data/vendor/local/share/gtk-doc/html/poppler/home.png +0 -0
  94. data/vendor/local/share/gtk-doc/html/poppler/index.html +7 -4
  95. data/vendor/local/share/gtk-doc/html/poppler/index.sgml +258 -269
  96. data/vendor/local/share/gtk-doc/html/poppler/left-insensitive.png +0 -0
  97. data/vendor/local/share/gtk-doc/html/poppler/left.png +0 -0
  98. data/vendor/local/share/gtk-doc/html/poppler/poppler-PopplerAction.html +454 -320
  99. data/vendor/local/share/gtk-doc/html/poppler/poppler-Version-and-Features-Information.html +102 -76
  100. data/vendor/local/share/gtk-doc/html/poppler/poppler-poppler.html +367 -278
  101. data/vendor/local/share/gtk-doc/html/poppler/poppler.devhelp2 +356 -409
  102. data/vendor/local/share/gtk-doc/html/poppler/right-insensitive.png +0 -0
  103. data/vendor/local/share/gtk-doc/html/poppler/right.png +0 -0
  104. data/vendor/local/share/gtk-doc/html/poppler/style.css +314 -104
  105. data/vendor/local/share/gtk-doc/html/poppler/up-insensitive.png +0 -0
  106. data/vendor/local/share/gtk-doc/html/poppler/up.png +0 -0
  107. data/vendor/local/share/man/man1/cjpeg.1 +23 -2
  108. data/vendor/local/share/man/man1/djpeg.1 +2 -2
  109. data/vendor/local/share/man/man1/jpegtran.1 +12 -4
  110. data/vendor/local/share/man/man1/pdfimages.1 +78 -7
  111. data/vendor/local/share/man/man1/pdfinfo.1 +6 -0
  112. data/vendor/local/share/man/man1/pdftocairo.1 +9 -17
  113. data/vendor/local/share/man/man1/pdftohtml.1 +1 -1
  114. data/vendor/local/share/man/man1/pdftoppm.1 +12 -0
  115. data/vendor/local/share/man/man1/pdftops.1 +10 -20
  116. data/vendor/local/share/man/man1/rdjpgcom.1 +1 -1
  117. data/vendor/local/share/man/man1/sqlite3.1 +72 -22
  118. metadata +34 -15
  119. data/lib/1.9/poppler.so +0 -0
  120. data/lib/2.1/poppler.so +0 -0
@@ -0,0 +1,357 @@
1
+ /* poppler-structure-element.h: glib interface to poppler
2
+ *
3
+ * Copyright (C) 2013 Igalia S.L.
4
+ *
5
+ * This program is free software; you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation; either version 2, or (at your option)
8
+ * any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program; if not, write to the Free Software
17
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
18
+ */
19
+
20
+ #ifndef __POPPLER_STRUCTURE_ELEMENT_H__
21
+ #define __POPPLER_STRUCTURE_ELEMENT_H__
22
+
23
+ #include <glib-object.h>
24
+ #include "poppler.h"
25
+
26
+ G_BEGIN_DECLS
27
+
28
+ #define POPPLER_TYPE_STRUCTURE_ELEMENT (poppler_structure_element_get_type ())
29
+ #define POPPLER_STRUCTURE_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), POPPLER_TYPE_STRUCTURE_ELEMENT, PopplerStructureElement))
30
+ #define POPPLER_IS_STRUCTURE_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), POPPLER_TYPE_STRUCTURE_ELEMENT))
31
+
32
+ /**
33
+ * PopplerStructureElementKind:
34
+ */
35
+ typedef enum {
36
+ POPPLER_STRUCTURE_ELEMENT_CONTENT,
37
+ POPPLER_STRUCTURE_ELEMENT_OBJECT_REFERENCE,
38
+ POPPLER_STRUCTURE_ELEMENT_DOCUMENT,
39
+ POPPLER_STRUCTURE_ELEMENT_PART,
40
+ POPPLER_STRUCTURE_ELEMENT_ARTICLE,
41
+ POPPLER_STRUCTURE_ELEMENT_SECTION,
42
+ POPPLER_STRUCTURE_ELEMENT_DIV,
43
+ POPPLER_STRUCTURE_ELEMENT_SPAN,
44
+ POPPLER_STRUCTURE_ELEMENT_QUOTE,
45
+ POPPLER_STRUCTURE_ELEMENT_NOTE,
46
+ POPPLER_STRUCTURE_ELEMENT_REFERENCE,
47
+ POPPLER_STRUCTURE_ELEMENT_BIBENTRY,
48
+ POPPLER_STRUCTURE_ELEMENT_CODE,
49
+ POPPLER_STRUCTURE_ELEMENT_LINK,
50
+ POPPLER_STRUCTURE_ELEMENT_ANNOT,
51
+ POPPLER_STRUCTURE_ELEMENT_BLOCKQUOTE,
52
+ POPPLER_STRUCTURE_ELEMENT_CAPTION,
53
+ POPPLER_STRUCTURE_ELEMENT_NONSTRUCT,
54
+ POPPLER_STRUCTURE_ELEMENT_TOC,
55
+ POPPLER_STRUCTURE_ELEMENT_TOC_ITEM,
56
+ POPPLER_STRUCTURE_ELEMENT_INDEX,
57
+ POPPLER_STRUCTURE_ELEMENT_PRIVATE,
58
+ POPPLER_STRUCTURE_ELEMENT_PARAGRAPH,
59
+ POPPLER_STRUCTURE_ELEMENT_HEADING,
60
+ POPPLER_STRUCTURE_ELEMENT_HEADING_1,
61
+ POPPLER_STRUCTURE_ELEMENT_HEADING_2,
62
+ POPPLER_STRUCTURE_ELEMENT_HEADING_3,
63
+ POPPLER_STRUCTURE_ELEMENT_HEADING_4,
64
+ POPPLER_STRUCTURE_ELEMENT_HEADING_5,
65
+ POPPLER_STRUCTURE_ELEMENT_HEADING_6,
66
+ POPPLER_STRUCTURE_ELEMENT_LIST,
67
+ POPPLER_STRUCTURE_ELEMENT_LIST_ITEM,
68
+ POPPLER_STRUCTURE_ELEMENT_LIST_LABEL,
69
+ POPPLER_STRUCTURE_ELEMENT_LIST_BODY,
70
+ POPPLER_STRUCTURE_ELEMENT_TABLE,
71
+ POPPLER_STRUCTURE_ELEMENT_TABLE_ROW,
72
+ POPPLER_STRUCTURE_ELEMENT_TABLE_HEADING,
73
+ POPPLER_STRUCTURE_ELEMENT_TABLE_DATA,
74
+ POPPLER_STRUCTURE_ELEMENT_TABLE_HEADER,
75
+ POPPLER_STRUCTURE_ELEMENT_TABLE_FOOTER,
76
+ POPPLER_STRUCTURE_ELEMENT_TABLE_BODY,
77
+ POPPLER_STRUCTURE_ELEMENT_RUBY,
78
+ POPPLER_STRUCTURE_ELEMENT_RUBY_BASE_TEXT,
79
+ POPPLER_STRUCTURE_ELEMENT_RUBY_ANNOT_TEXT,
80
+ POPPLER_STRUCTURE_ELEMENT_RUBY_PUNCTUATION,
81
+ POPPLER_STRUCTURE_ELEMENT_WARICHU,
82
+ POPPLER_STRUCTURE_ELEMENT_WARICHU_TEXT,
83
+ POPPLER_STRUCTURE_ELEMENT_WARICHU_PUNCTUATION,
84
+ POPPLER_STRUCTURE_ELEMENT_FIGURE,
85
+ POPPLER_STRUCTURE_ELEMENT_FORMULA,
86
+ POPPLER_STRUCTURE_ELEMENT_FORM,
87
+ } PopplerStructureElementKind;
88
+
89
+ /**
90
+ * PopplerStructureGetTextFlags:
91
+ * @POPPLER_STRUCTURE_GET_TEXT_NONE: No flags.
92
+ * @POPPLER_STRUCTURE_GET_TEXT_RECURSIVE: For non-leaf, non-content
93
+ * elements, recursively obtain the text from all the elements
94
+ * enclosed in the subtree.
95
+ */
96
+ typedef enum {
97
+ POPPLER_STRUCTURE_GET_TEXT_NONE = 0,
98
+ POPPLER_STRUCTURE_GET_TEXT_RECURSIVE = (1 << 0),
99
+ } PopplerStructureGetTextFlags;
100
+
101
+ /**
102
+ * PopplerStructurePlacement:
103
+ */
104
+ typedef enum {
105
+ POPPLER_STRUCTURE_PLACEMENT_BLOCK,
106
+ POPPLER_STRUCTURE_PLACEMENT_INLINE,
107
+ POPPLER_STRUCTURE_PLACEMENT_BEFORE,
108
+ POPPLER_STRUCTURE_PLACEMENT_START,
109
+ POPPLER_STRUCTURE_PLACEMENT_END,
110
+ } PopplerStructurePlacement;
111
+
112
+ /**
113
+ * PopplerStructureWritingMode:
114
+ */
115
+ typedef enum {
116
+ POPPLER_STRUCTURE_WRITING_MODE_LR_TB,
117
+ POPPLER_STRUCTURE_WRITING_MODE_RL_TB,
118
+ POPPLER_STRUCTURE_WRITING_MODE_TB_RL,
119
+ } PopplerStructureWritingMode;
120
+
121
+ /**
122
+ * PopplerStructureBorderStyle:
123
+ */
124
+ typedef enum {
125
+ POPPLER_STRUCTURE_BORDER_STYLE_NONE,
126
+ POPPLER_STRUCTURE_BORDER_STYLE_HIDDEN,
127
+ POPPLER_STRUCTURE_BORDER_STYLE_DOTTED,
128
+ POPPLER_STRUCTURE_BORDER_STYLE_DASHED,
129
+ POPPLER_STRUCTURE_BORDER_STYLE_SOLID,
130
+ POPPLER_STRUCTURE_BORDER_STYLE_DOUBLE,
131
+ POPPLER_STRUCTURE_BORDER_STYLE_GROOVE,
132
+ POPPLER_STRUCTURE_BORDER_STYLE_INSET,
133
+ POPPLER_STRUCTURE_BORDER_STYLE_OUTSET,
134
+ } PopplerStructureBorderStyle;
135
+
136
+ /**
137
+ * PopplerStructureTextAlign:
138
+ */
139
+ typedef enum {
140
+ POPPLER_STRUCTURE_TEXT_ALIGN_START,
141
+ POPPLER_STRUCTURE_TEXT_ALIGN_CENTER,
142
+ POPPLER_STRUCTURE_TEXT_ALIGN_END,
143
+ POPPLER_STRUCTURE_TEXT_ALIGN_JUSTIFY,
144
+ } PopplerStructureTextAlign;
145
+
146
+ /**
147
+ * PopplerStructureBlockAlign:
148
+ */
149
+ typedef enum {
150
+ POPPLER_STRUCTURE_BLOCK_ALIGN_BEFORE,
151
+ POPPLER_STRUCTURE_BLOCK_ALIGN_MIDDLE,
152
+ POPPLER_STRUCTURE_BLOCK_ALIGN_AFTER,
153
+ POPPLER_STRUCTURE_BLOCK_ALIGN_JUSTIFY,
154
+ } PopplerStructureBlockAlign;
155
+
156
+ /**
157
+ * PopplerStructureInlineAlign:
158
+ */
159
+ typedef enum {
160
+ POPPLER_STRUCTURE_INLINE_ALIGN_START,
161
+ POPPLER_STRUCTURE_INLINE_ALIGN_CENTER,
162
+ POPPLER_STRUCTURE_INLINE_ALIGN_END,
163
+ } PopplerStructureInlineAlign;
164
+
165
+ /**
166
+ * PopplerStructureTextDecoration:
167
+ */
168
+ typedef enum {
169
+ POPPLER_STRUCTURE_TEXT_DECORATION_NONE,
170
+ POPPLER_STRUCTURE_TEXT_DECORATION_UNDERLINE,
171
+ POPPLER_STRUCTURE_TEXT_DECORATION_OVERLINE,
172
+ POPPLER_STRUCTURE_TEXT_DECORATION_LINETHROUGH,
173
+ } PopplerStructureTextDecoration;
174
+
175
+ /**
176
+ * PopplerStructureRubyAlign:
177
+ */
178
+ typedef enum
179
+ {
180
+ POPPLER_STRUCTURE_RUBY_ALIGN_START,
181
+ POPPLER_STRUCTURE_RUBY_ALIGN_CENTER,
182
+ POPPLER_STRUCTURE_RUBY_ALIGN_END,
183
+ POPPLER_STRUCTURE_RUBY_ALIGN_JUSTIFY,
184
+ POPPLER_STRUCTURE_RUBY_ALIGN_DISTRIBUTE,
185
+ } PopplerStructureRubyAlign;
186
+
187
+ /**
188
+ * PopplerStructureRubyPosition:
189
+ */
190
+ typedef enum {
191
+ POPPLER_STRUCTURE_RUBY_POSITION_BEFORE,
192
+ POPPLER_STRUCTURE_RUBY_POSITION_AFTER,
193
+ POPPLER_STRUCTURE_RUBY_POSITION_WARICHU,
194
+ POPPLER_STRUCTURE_RUBY_POSITION_INLINE,
195
+ } PopplerStructureRubyPosition;
196
+
197
+ /**
198
+ * PopplerStructureGlyphOrientation:
199
+ */
200
+ typedef enum {
201
+ POPPLER_STRUCTURE_GLYPH_ORIENTATION_AUTO,
202
+ POPPLER_STRUCTURE_GLYPH_ORIENTATION_0 = POPPLER_STRUCTURE_GLYPH_ORIENTATION_AUTO,
203
+ POPPLER_STRUCTURE_GLYPH_ORIENTATION_90,
204
+ POPPLER_STRUCTURE_GLYPH_ORIENTATION_180,
205
+ POPPLER_STRUCTURE_GLYPH_ORIENTATION_270,
206
+ } PopplerStructureGlyphOrientation;
207
+
208
+ /**
209
+ * PopplerStructureListNumbering:
210
+ */
211
+ typedef enum {
212
+ POPPLER_STRUCTURE_LIST_NUMBERING_NONE,
213
+ POPPLER_STRUCTURE_LIST_NUMBERING_DISC,
214
+ POPPLER_STRUCTURE_LIST_NUMBERING_CIRCLE,
215
+ POPPLER_STRUCTURE_LIST_NUMBERING_SQUARE,
216
+ POPPLER_STRUCTURE_LIST_NUMBERING_DECIMAL,
217
+ POPPLER_STRUCTURE_LIST_NUMBERING_UPPER_ROMAN,
218
+ POPPLER_STRUCTURE_LIST_NUMBERING_LOWER_ROMAN,
219
+ POPPLER_STRUCTURE_LIST_NUMBERING_UPPER_ALPHA,
220
+ POPPLER_STRUCTURE_LIST_NUMBERING_LOWER_ALPHA,
221
+ } PopplerStructureListNumbering;
222
+
223
+ /**
224
+ * PopplerStructureFormRole:
225
+ */
226
+ typedef enum {
227
+ POPPLER_STRUCTURE_FORM_ROLE_UNDEFINED,
228
+ POPPLER_STRUCTURE_FORM_ROLE_RADIO_BUTTON,
229
+ POPPLER_STRUCTURE_FORM_ROLE_PUSH_BUTTON,
230
+ POPPLER_STRUCTURE_FORM_ROLE_TEXT_VALUE,
231
+ POPPLER_STRUCTURE_FORM_ROLE_CHECKBOX,
232
+ } PopplerStructureFormRole;
233
+
234
+ /**
235
+ * PopplerStructureFormState:
236
+ */
237
+ typedef enum {
238
+ POPPLER_STRUCTURE_FORM_STATE_ON,
239
+ POPPLER_STRUCTURE_FORM_STATE_OFF,
240
+ POPPLER_STRUCTURE_FORM_STATE_NEUTRAL,
241
+ } PopplerStructureFormState;
242
+
243
+ /**
244
+ * PopplerStructureTableScope:
245
+ */
246
+ typedef enum {
247
+ POPPLER_STRUCTURE_TABLE_SCOPE_ROW,
248
+ POPPLER_STRUCTURE_TABLE_SCOPE_COLUMN,
249
+ POPPLER_STRUCTURE_TABLE_SCOPE_BOTH,
250
+ } PopplerStructureTableScope;
251
+
252
+
253
+ GType poppler_structure_element_get_type (void) G_GNUC_CONST;
254
+ PopplerStructureElementKind poppler_structure_element_get_kind (PopplerStructureElement *poppler_structure_element);
255
+ gint poppler_structure_element_get_page (PopplerStructureElement *poppler_structure_element);
256
+ gboolean poppler_structure_element_is_content (PopplerStructureElement *poppler_structure_element);
257
+ gboolean poppler_structure_element_is_inline (PopplerStructureElement *poppler_structure_element);
258
+ gboolean poppler_structure_element_is_block (PopplerStructureElement *poppler_structure_element);
259
+ gboolean poppler_structure_element_is_grouping (PopplerStructureElement *poppler_structure_element);
260
+ gchar *poppler_structure_element_get_id (PopplerStructureElement *poppler_structure_element);
261
+ gchar *poppler_structure_element_get_title (PopplerStructureElement *poppler_structure_element);
262
+ gchar *poppler_structure_element_get_abbreviation (PopplerStructureElement *poppler_structure_element);
263
+ gchar *poppler_structure_element_get_language (PopplerStructureElement *poppler_structure_element);
264
+ gchar *poppler_structure_element_get_text (PopplerStructureElement *poppler_structure_element,
265
+ PopplerStructureGetTextFlags flags);
266
+ gchar *poppler_structure_element_get_alt_text (PopplerStructureElement *poppler_structure_element);
267
+ gchar *poppler_structure_element_get_actual_text (PopplerStructureElement *poppler_structure_element);
268
+ PopplerTextSpan **poppler_structure_element_get_text_spans (PopplerStructureElement *poppler_structure_element,
269
+ guint *n_text_spans);
270
+
271
+ PopplerStructurePlacement poppler_structure_element_get_placement (PopplerStructureElement *poppler_structure_element);
272
+ PopplerStructureWritingMode poppler_structure_element_get_writing_mode (PopplerStructureElement *poppler_structure_element);
273
+ gboolean poppler_structure_element_get_background_color (PopplerStructureElement *poppler_structure_element,
274
+ PopplerColor *color);
275
+ gboolean poppler_structure_element_get_border_color (PopplerStructureElement *poppler_structure_element,
276
+ PopplerColor *colors);
277
+ void poppler_structure_element_get_border_style (PopplerStructureElement *poppler_structure_element,
278
+ PopplerStructureBorderStyle *border_styles);
279
+ gboolean poppler_structure_element_get_border_thickness (PopplerStructureElement *poppler_structure_element,
280
+ gdouble *border_thicknesses);
281
+ void poppler_structure_element_get_padding (PopplerStructureElement *poppler_structure_element,
282
+ gdouble *paddings);
283
+ gboolean poppler_structure_element_get_color (PopplerStructureElement *poppler_structure_element,
284
+ PopplerColor *color);
285
+
286
+ gdouble poppler_structure_element_get_space_before (PopplerStructureElement *poppler_structure_element);
287
+ gdouble poppler_structure_element_get_space_after (PopplerStructureElement *poppler_structure_element);
288
+ gdouble poppler_structure_element_get_start_indent (PopplerStructureElement *poppler_structure_element);
289
+ gdouble poppler_structure_element_get_end_indent (PopplerStructureElement *poppler_structure_element);
290
+ gdouble poppler_structure_element_get_text_indent (PopplerStructureElement *poppler_structure_element);
291
+ PopplerStructureTextAlign poppler_structure_element_get_text_align (PopplerStructureElement *poppler_structure_element);
292
+ gboolean poppler_structure_element_get_bounding_box (PopplerStructureElement *poppler_structure_element,
293
+ PopplerRectangle *bounding_box);
294
+ gdouble poppler_structure_element_get_width (PopplerStructureElement *poppler_structure_element);
295
+ gdouble poppler_structure_element_get_height (PopplerStructureElement *poppler_structure_element);
296
+ PopplerStructureBlockAlign poppler_structure_element_get_block_align (PopplerStructureElement *poppler_structure_element);
297
+ PopplerStructureInlineAlign poppler_structure_element_get_inline_align (PopplerStructureElement *poppler_structure_element);
298
+ void poppler_structure_element_get_table_border_style (PopplerStructureElement *poppler_structure_element,
299
+ PopplerStructureBorderStyle *border_styles);
300
+ void poppler_structure_element_get_table_padding (PopplerStructureElement *poppler_structure_element,
301
+ gdouble *paddings);
302
+
303
+ gdouble poppler_structure_element_get_baseline_shift (PopplerStructureElement *poppler_structure_element);
304
+ gdouble poppler_structure_element_get_line_height (PopplerStructureElement *poppler_structure_element);
305
+ gboolean poppler_structure_element_get_text_decoration_color
306
+ (PopplerStructureElement *poppler_structure_element,
307
+ PopplerColor *color);
308
+ gdouble poppler_structure_element_get_text_decoration_thickness
309
+ (PopplerStructureElement *poppler_structure_element);
310
+ PopplerStructureTextDecoration poppler_structure_element_get_text_decoration_type
311
+ (PopplerStructureElement *poppler_structure_element);
312
+ PopplerStructureRubyAlign poppler_structure_element_get_ruby_align (PopplerStructureElement *poppler_structure_element);
313
+ PopplerStructureRubyPosition poppler_structure_element_get_ruby_position (PopplerStructureElement *poppler_structure_element);
314
+ PopplerStructureGlyphOrientation poppler_structure_element_get_glyph_orientation (PopplerStructureElement *poppler_structure_element);
315
+
316
+ guint poppler_structure_element_get_column_count (PopplerStructureElement *poppler_structure_element);
317
+ gdouble *poppler_structure_element_get_column_gaps (PopplerStructureElement *poppler_structure_element,
318
+ guint *n_values);
319
+ gdouble *poppler_structure_element_get_column_widths (PopplerStructureElement *poppler_structure_element,
320
+ guint *n_values);
321
+
322
+ PopplerStructureListNumbering poppler_structure_element_get_list_numbering (PopplerStructureElement *poppler_structure_element);
323
+
324
+ PopplerStructureFormRole poppler_structure_element_get_form_role (PopplerStructureElement *poppler_structure_element);
325
+ PopplerStructureFormState poppler_structure_element_get_form_state (PopplerStructureElement *poppler_structure_element);
326
+ gchar *poppler_structure_element_get_form_description (PopplerStructureElement *poppler_structure_element);
327
+
328
+ guint poppler_structure_element_get_table_row_span (PopplerStructureElement *poppler_structure_element);
329
+ guint poppler_structure_element_get_table_column_span (PopplerStructureElement *poppler_structure_element);
330
+ gchar **poppler_structure_element_get_table_headers (PopplerStructureElement *poppler_structure_element);
331
+ PopplerStructureTableScope poppler_structure_element_get_table_scope (PopplerStructureElement *poppler_structure_element);
332
+ gchar *poppler_structure_element_get_table_summary (PopplerStructureElement *poppler_structure_element);
333
+
334
+ #define POPPLER_TYPE_STRUCTURE_ELEMENT_ITER (poppler_structure_element_iter_get_type ())
335
+ GType poppler_structure_element_iter_get_type (void) G_GNUC_CONST;
336
+ PopplerStructureElementIter *poppler_structure_element_iter_new (PopplerDocument *poppler_document);
337
+ PopplerStructureElementIter *poppler_structure_element_iter_get_child (PopplerStructureElementIter *parent);
338
+ PopplerStructureElementIter *poppler_structure_element_iter_copy (PopplerStructureElementIter *iter);
339
+ PopplerStructureElement *poppler_structure_element_iter_get_element (PopplerStructureElementIter *iter);
340
+ gboolean poppler_structure_element_iter_next (PopplerStructureElementIter *iter);
341
+ void poppler_structure_element_iter_free (PopplerStructureElementIter *iter);
342
+
343
+ #define POPPLER_TYPE_TEXT_SPAN (poppler_text_span_get_type ())
344
+ GType poppler_text_span_get_type (void) G_GNUC_CONST;
345
+ PopplerTextSpan *poppler_text_span_copy (PopplerTextSpan *poppler_text_span);
346
+ void poppler_text_span_free (PopplerTextSpan *poppler_text_span);
347
+ gboolean poppler_text_span_is_fixed_width_font (PopplerTextSpan *poppler_text_span);
348
+ gboolean poppler_text_span_is_serif_font (PopplerTextSpan *poppler_text_span);
349
+ gboolean poppler_text_span_is_bold_font (PopplerTextSpan *poppler_text_span);
350
+ void poppler_text_span_get_color (PopplerTextSpan *poppler_text_span,
351
+ PopplerColor *color);
352
+ const gchar *poppler_text_span_get_text (PopplerTextSpan *poppler_text_span);
353
+ const gchar *poppler_text_span_get_font_name (PopplerTextSpan *poppler_text_span);
354
+
355
+ G_END_DECLS
356
+
357
+ #endif /* !__POPPLER_STRUCTURE_ELEMENT_H__ */
@@ -29,7 +29,7 @@ GQuark poppler_error_quark (void);
29
29
 
30
30
  /**
31
31
  * PopplerError:
32
- * @POPPLER_ERROR_INVALID: Generic error when a document opration fails
32
+ * @POPPLER_ERROR_INVALID: Generic error when a document operation fails
33
33
  * @POPPLER_ERROR_ENCRYPTED: Document is encrypted
34
34
  * @POPPLER_ERROR_OPEN_FILE: File could not be opened for writing when saving document
35
35
  * @POPPLER_ERROR_BAD_CATALOG: Failed to read the document catalog
@@ -175,6 +175,7 @@ typedef struct _PopplerDocument PopplerDocument;
175
175
  typedef struct _PopplerIndexIter PopplerIndexIter;
176
176
  typedef struct _PopplerFontsIter PopplerFontsIter;
177
177
  typedef struct _PopplerLayersIter PopplerLayersIter;
178
+ typedef struct _PopplerPoint PopplerPoint;
178
179
  typedef struct _PopplerRectangle PopplerRectangle;
179
180
  typedef struct _PopplerTextAttributes PopplerTextAttributes;
180
181
  typedef struct _PopplerColor PopplerColor;
@@ -197,11 +198,19 @@ typedef struct _PopplerMedia PopplerMedia;
197
198
  typedef struct _PopplerAnnot PopplerAnnot;
198
199
  typedef struct _PopplerAnnotMarkup PopplerAnnotMarkup;
199
200
  typedef struct _PopplerAnnotText PopplerAnnotText;
201
+ typedef struct _PopplerAnnotTextMarkup PopplerAnnotTextMarkup;
200
202
  typedef struct _PopplerAnnotFreeText PopplerAnnotFreeText;
201
203
  typedef struct _PopplerAnnotFileAttachment PopplerAnnotFileAttachment;
202
204
  typedef struct _PopplerAnnotMovie PopplerAnnotMovie;
203
205
  typedef struct _PopplerAnnotScreen PopplerAnnotScreen;
204
206
  typedef struct _PopplerAnnotCalloutLine PopplerAnnotCalloutLine;
207
+ typedef struct _PopplerAnnotLine PopplerAnnotLine;
208
+ typedef struct _PopplerAnnotCircle PopplerAnnotCircle;
209
+ typedef struct _PopplerAnnotSquare PopplerAnnotSquare;
210
+ typedef struct _PopplerQuadrilateral PopplerQuadrilateral;
211
+ typedef struct _PopplerStructureElement PopplerStructureElement;
212
+ typedef struct _PopplerStructureElementIter PopplerStructureElementIter;
213
+ typedef struct _PopplerTextSpan PopplerTextSpan;
205
214
 
206
215
  typedef enum
207
216
  {
@@ -227,5 +236,6 @@ G_END_DECLS
227
236
  #include "poppler-date.h"
228
237
  #include "poppler-movie.h"
229
238
  #include "poppler-media.h"
239
+ #include "poppler-structure-element.h"
230
240
 
231
241
  #endif /* __POPPLER_GLIB_H__ */
@@ -107,9 +107,9 @@ extern "C" {
107
107
  ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
108
108
  ** [sqlite_version()] and [sqlite_source_id()].
109
109
  */
110
- #define SQLITE_VERSION "3.8.2"
111
- #define SQLITE_VERSION_NUMBER 3008002
112
- #define SQLITE_SOURCE_ID "2013-12-06 14:53:30 27392118af4c38c5203a04b8013e1afdb1cebd0d"
110
+ #define SQLITE_VERSION "3.8.6"
111
+ #define SQLITE_VERSION_NUMBER 3008006
112
+ #define SQLITE_SOURCE_ID "2014-08-15 11:46:33 9491ba7d738528f168657adb43a198238abde19e"
113
113
 
114
114
  /*
115
115
  ** CAPI3REF: Run-Time Library Version Numbers
@@ -269,7 +269,7 @@ typedef sqlite_uint64 sqlite3_uint64;
269
269
  **
270
270
  ** ^The sqlite3_close() and sqlite3_close_v2() routines are destructors
271
271
  ** for the [sqlite3] object.
272
- ** ^Calls to sqlite3_close() and sqlite3_close_v2() return SQLITE_OK if
272
+ ** ^Calls to sqlite3_close() and sqlite3_close_v2() return [SQLITE_OK] if
273
273
  ** the [sqlite3] object is successfully destroyed and all associated
274
274
  ** resources are deallocated.
275
275
  **
@@ -277,7 +277,7 @@ typedef sqlite_uint64 sqlite3_uint64;
277
277
  ** statements or unfinished sqlite3_backup objects then sqlite3_close()
278
278
  ** will leave the database connection open and return [SQLITE_BUSY].
279
279
  ** ^If sqlite3_close_v2() is called with unfinalized prepared statements
280
- ** and unfinished sqlite3_backups, then the database connection becomes
280
+ ** and/or unfinished sqlite3_backups, then the database connection becomes
281
281
  ** an unusable "zombie" which will automatically be deallocated when the
282
282
  ** last prepared statement is finalized or the last sqlite3_backup is
283
283
  ** finished. The sqlite3_close_v2() interface is intended for use with
@@ -290,7 +290,7 @@ typedef sqlite_uint64 sqlite3_uint64;
290
290
  ** with the [sqlite3] object prior to attempting to close the object. ^If
291
291
  ** sqlite3_close_v2() is called on a [database connection] that still has
292
292
  ** outstanding [prepared statements], [BLOB handles], and/or
293
- ** [sqlite3_backup] objects then it returns SQLITE_OK but the deallocation
293
+ ** [sqlite3_backup] objects then it returns [SQLITE_OK] and the deallocation
294
294
  ** of resources is deferred until all [prepared statements], [BLOB handles],
295
295
  ** and [sqlite3_backup] objects are also destroyed.
296
296
  **
@@ -386,16 +386,14 @@ SQLITE_API int sqlite3_exec(
386
386
 
387
387
  /*
388
388
  ** CAPI3REF: Result Codes
389
- ** KEYWORDS: SQLITE_OK {error code} {error codes}
390
- ** KEYWORDS: {result code} {result codes}
389
+ ** KEYWORDS: {result code definitions}
391
390
  **
392
391
  ** Many SQLite functions return an integer result code from the set shown
393
392
  ** here in order to indicate success or failure.
394
393
  **
395
394
  ** New error codes may be added in future versions of SQLite.
396
395
  **
397
- ** See also: [SQLITE_IOERR_READ | extended result codes],
398
- ** [sqlite3_vtab_on_conflict()] [SQLITE_ROLLBACK | result codes].
396
+ ** See also: [extended result code definitions]
399
397
  */
400
398
  #define SQLITE_OK 0 /* Successful result */
401
399
  /* beginning-of-error-codes */
@@ -433,26 +431,19 @@ SQLITE_API int sqlite3_exec(
433
431
 
434
432
  /*
435
433
  ** CAPI3REF: Extended Result Codes
436
- ** KEYWORDS: {extended error code} {extended error codes}
437
- ** KEYWORDS: {extended result code} {extended result codes}
434
+ ** KEYWORDS: {extended result code definitions}
438
435
  **
439
- ** In its default configuration, SQLite API routines return one of 26 integer
440
- ** [SQLITE_OK | result codes]. However, experience has shown that many of
436
+ ** In its default configuration, SQLite API routines return one of 30 integer
437
+ ** [result codes]. However, experience has shown that many of
441
438
  ** these result codes are too coarse-grained. They do not provide as
442
439
  ** much information about problems as programmers might like. In an effort to
443
440
  ** address this, newer versions of SQLite (version 3.3.8 and later) include
444
441
  ** support for additional result codes that provide more detailed information
445
- ** about errors. The extended result codes are enabled or disabled
442
+ ** about errors. These [extended result codes] are enabled or disabled
446
443
  ** on a per database connection basis using the
447
- ** [sqlite3_extended_result_codes()] API.
448
- **
449
- ** Some of the available extended result codes are listed here.
450
- ** One may expect the number of extended result codes will increase
451
- ** over time. Software that uses extended result codes should expect
452
- ** to see new result codes in future releases of SQLite.
453
- **
454
- ** The SQLITE_OK result code will never be extended. It will always
455
- ** be exactly zero.
444
+ ** [sqlite3_extended_result_codes()] API. Or, the extended code for
445
+ ** the most recent error can be obtained using
446
+ ** [sqlite3_extended_errcode()].
456
447
  */
457
448
  #define SQLITE_IOERR_READ (SQLITE_IOERR | (1<<8))
458
449
  #define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2<<8))
@@ -491,6 +482,7 @@ SQLITE_API int sqlite3_exec(
491
482
  #define SQLITE_READONLY_RECOVERY (SQLITE_READONLY | (1<<8))
492
483
  #define SQLITE_READONLY_CANTLOCK (SQLITE_READONLY | (2<<8))
493
484
  #define SQLITE_READONLY_ROLLBACK (SQLITE_READONLY | (3<<8))
485
+ #define SQLITE_READONLY_DBMOVED (SQLITE_READONLY | (4<<8))
494
486
  #define SQLITE_ABORT_ROLLBACK (SQLITE_ABORT | (2<<8))
495
487
  #define SQLITE_CONSTRAINT_CHECK (SQLITE_CONSTRAINT | (1<<8))
496
488
  #define SQLITE_CONSTRAINT_COMMITHOOK (SQLITE_CONSTRAINT | (2<<8))
@@ -558,7 +550,11 @@ SQLITE_API int sqlite3_exec(
558
550
  ** after reboot following a crash or power loss, the only bytes in a
559
551
  ** file that were written at the application level might have changed
560
552
  ** and that adjacent bytes, even bytes within the same sector are
561
- ** guaranteed to be unchanged.
553
+ ** guaranteed to be unchanged. The SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN
554
+ ** flag indicate that a file cannot be deleted when open. The
555
+ ** SQLITE_IOCAP_IMMUTABLE flag indicates that the file is on
556
+ ** read-only media and cannot be changed even by processes with
557
+ ** elevated privileges.
562
558
  */
563
559
  #define SQLITE_IOCAP_ATOMIC 0x00000001
564
560
  #define SQLITE_IOCAP_ATOMIC512 0x00000002
@@ -573,6 +569,7 @@ SQLITE_API int sqlite3_exec(
573
569
  #define SQLITE_IOCAP_SEQUENTIAL 0x00000400
574
570
  #define SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN 0x00000800
575
571
  #define SQLITE_IOCAP_POWERSAFE_OVERWRITE 0x00001000
572
+ #define SQLITE_IOCAP_IMMUTABLE 0x00002000
576
573
 
577
574
  /*
578
575
  ** CAPI3REF: File Locking Levels
@@ -679,7 +676,7 @@ struct sqlite3_file {
679
676
  ** locking strategy (for example to use dot-file locks), to inquire
680
677
  ** about the status of a lock, or to break stale locks. The SQLite
681
678
  ** core reserves all opcodes less than 100 for its own use.
682
- ** A [SQLITE_FCNTL_LOCKSTATE | list of opcodes] less than 100 is available.
679
+ ** A [file control opcodes | list of opcodes] less than 100 is available.
683
680
  ** Applications that define a custom xFileControl method should use opcodes
684
681
  ** greater than 100 to avoid conflicts. VFS implementations should
685
682
  ** return [SQLITE_NOTFOUND] for file control opcodes that they do not
@@ -752,6 +749,7 @@ struct sqlite3_io_methods {
752
749
 
753
750
  /*
754
751
  ** CAPI3REF: Standard File Control Opcodes
752
+ ** KEYWORDS: {file control opcodes} {file control opcode}
755
753
  **
756
754
  ** These integer constants are opcodes for the xFileControl method
757
755
  ** of the [sqlite3_io_methods] object and for the [sqlite3_file_control()]
@@ -789,15 +787,29 @@ struct sqlite3_io_methods {
789
787
  ** additional information.
790
788
  **
791
789
  ** <li>[[SQLITE_FCNTL_SYNC_OMITTED]]
792
- ** ^(The [SQLITE_FCNTL_SYNC_OMITTED] opcode is generated internally by
793
- ** SQLite and sent to all VFSes in place of a call to the xSync method
794
- ** when the database connection has [PRAGMA synchronous] set to OFF.)^
795
- ** Some specialized VFSes need this signal in order to operate correctly
796
- ** when [PRAGMA synchronous | PRAGMA synchronous=OFF] is set, but most
797
- ** VFSes do not need this signal and should silently ignore this opcode.
798
- ** Applications should not call [sqlite3_file_control()] with this
799
- ** opcode as doing so may disrupt the operation of the specialized VFSes
800
- ** that do require it.
790
+ ** No longer in use.
791
+ **
792
+ ** <li>[[SQLITE_FCNTL_SYNC]]
793
+ ** The [SQLITE_FCNTL_SYNC] opcode is generated internally by SQLite and
794
+ ** sent to the VFS immediately before the xSync method is invoked on a
795
+ ** database file descriptor. Or, if the xSync method is not invoked
796
+ ** because the user has configured SQLite with
797
+ ** [PRAGMA synchronous | PRAGMA synchronous=OFF] it is invoked in place
798
+ ** of the xSync method. In most cases, the pointer argument passed with
799
+ ** this file-control is NULL. However, if the database file is being synced
800
+ ** as part of a multi-database commit, the argument points to a nul-terminated
801
+ ** string containing the transactions master-journal file name. VFSes that
802
+ ** do not need this signal should silently ignore this opcode. Applications
803
+ ** should not call [sqlite3_file_control()] with this opcode as doing so may
804
+ ** disrupt the operation of the specialized VFSes that do require it.
805
+ **
806
+ ** <li>[[SQLITE_FCNTL_COMMIT_PHASETWO]]
807
+ ** The [SQLITE_FCNTL_COMMIT_PHASETWO] opcode is generated internally by SQLite
808
+ ** and sent to the VFS after a transaction has been committed immediately
809
+ ** but before the database is unlocked. VFSes that do not need this signal
810
+ ** should silently ignore this opcode. Applications should not call
811
+ ** [sqlite3_file_control()] with this opcode as doing so may disrupt the
812
+ ** operation of the specialized VFSes that do require it.
801
813
  **
802
814
  ** <li>[[SQLITE_FCNTL_WIN32_AV_RETRY]]
803
815
  ** ^The [SQLITE_FCNTL_WIN32_AV_RETRY] opcode is used to configure automatic
@@ -921,6 +933,18 @@ struct sqlite3_io_methods {
921
933
  ** SQLite stack may generate instances of this file control if
922
934
  ** the [SQLITE_USE_FCNTL_TRACE] compile-time option is enabled.
923
935
  **
936
+ ** <li>[[SQLITE_FCNTL_HAS_MOVED]]
937
+ ** The [SQLITE_FCNTL_HAS_MOVED] file control interprets its argument as a
938
+ ** pointer to an integer and it writes a boolean into that integer depending
939
+ ** on whether or not the file has been renamed, moved, or deleted since it
940
+ ** was first opened.
941
+ **
942
+ ** <li>[[SQLITE_FCNTL_WIN32_SET_HANDLE]]
943
+ ** The [SQLITE_FCNTL_WIN32_SET_HANDLE] opcode is used for debugging. This
944
+ ** opcode causes the xFileControl method to swap the file handle with the one
945
+ ** pointed to by the pArg argument. This capability is used during testing
946
+ ** and only needs to be supported when SQLITE_TEST is defined.
947
+ **
924
948
  ** </ul>
925
949
  */
926
950
  #define SQLITE_FCNTL_LOCKSTATE 1
@@ -941,6 +965,10 @@ struct sqlite3_io_methods {
941
965
  #define SQLITE_FCNTL_TEMPFILENAME 16
942
966
  #define SQLITE_FCNTL_MMAP_SIZE 18
943
967
  #define SQLITE_FCNTL_TRACE 19
968
+ #define SQLITE_FCNTL_HAS_MOVED 20
969
+ #define SQLITE_FCNTL_SYNC 21
970
+ #define SQLITE_FCNTL_COMMIT_PHASETWO 22
971
+ #define SQLITE_FCNTL_WIN32_SET_HANDLE 23
944
972
 
945
973
  /*
946
974
  ** CAPI3REF: Mutex Handle
@@ -2001,27 +2029,33 @@ SQLITE_API int sqlite3_complete16(const void *sql);
2001
2029
  /*
2002
2030
  ** CAPI3REF: Register A Callback To Handle SQLITE_BUSY Errors
2003
2031
  **
2004
- ** ^This routine sets a callback function that might be invoked whenever
2005
- ** an attempt is made to open a database table that another thread
2006
- ** or process has locked.
2032
+ ** ^The sqlite3_busy_handler(D,X,P) routine sets a callback function X
2033
+ ** that might be invoked with argument P whenever
2034
+ ** an attempt is made to access a database table associated with
2035
+ ** [database connection] D when another thread
2036
+ ** or process has the table locked.
2037
+ ** The sqlite3_busy_handler() interface is used to implement
2038
+ ** [sqlite3_busy_timeout()] and [PRAGMA busy_timeout].
2007
2039
  **
2008
- ** ^If the busy callback is NULL, then [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED]
2040
+ ** ^If the busy callback is NULL, then [SQLITE_BUSY]
2009
2041
  ** is returned immediately upon encountering the lock. ^If the busy callback
2010
2042
  ** is not NULL, then the callback might be invoked with two arguments.
2011
2043
  **
2012
2044
  ** ^The first argument to the busy handler is a copy of the void* pointer which
2013
2045
  ** is the third argument to sqlite3_busy_handler(). ^The second argument to
2014
2046
  ** the busy handler callback is the number of times that the busy handler has
2015
- ** been invoked for this locking event. ^If the
2047
+ ** been invoked for the same locking event. ^If the
2016
2048
  ** busy callback returns 0, then no additional attempts are made to
2017
- ** access the database and [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED] is returned.
2049
+ ** access the database and [SQLITE_BUSY] is returned
2050
+ ** to the application.
2018
2051
  ** ^If the callback returns non-zero, then another attempt
2019
- ** is made to open the database for reading and the cycle repeats.
2052
+ ** is made to access the database and the cycle repeats.
2020
2053
  **
2021
2054
  ** The presence of a busy handler does not guarantee that it will be invoked
2022
2055
  ** when there is lock contention. ^If SQLite determines that invoking the busy
2023
2056
  ** handler could result in a deadlock, it will go ahead and return [SQLITE_BUSY]
2024
- ** or [SQLITE_IOERR_BLOCKED] instead of invoking the busy handler.
2057
+ ** to the application instead of invoking the
2058
+ ** busy handler.
2025
2059
  ** Consider a scenario where one process is holding a read lock that
2026
2060
  ** it is trying to promote to a reserved lock and
2027
2061
  ** a second process is holding a reserved lock that it is trying
@@ -2035,28 +2069,15 @@ SQLITE_API int sqlite3_complete16(const void *sql);
2035
2069
  **
2036
2070
  ** ^The default busy callback is NULL.
2037
2071
  **
2038
- ** ^The [SQLITE_BUSY] error is converted to [SQLITE_IOERR_BLOCKED]
2039
- ** when SQLite is in the middle of a large transaction where all the
2040
- ** changes will not fit into the in-memory cache. SQLite will
2041
- ** already hold a RESERVED lock on the database file, but it needs
2042
- ** to promote this lock to EXCLUSIVE so that it can spill cache
2043
- ** pages into the database file without harm to concurrent
2044
- ** readers. ^If it is unable to promote the lock, then the in-memory
2045
- ** cache will be left in an inconsistent state and so the error
2046
- ** code is promoted from the relatively benign [SQLITE_BUSY] to
2047
- ** the more severe [SQLITE_IOERR_BLOCKED]. ^This error code promotion
2048
- ** forces an automatic rollback of the changes. See the
2049
- ** <a href="/cvstrac/wiki?p=CorruptionFollowingBusyError">
2050
- ** CorruptionFollowingBusyError</a> wiki page for a discussion of why
2051
- ** this is important.
2052
- **
2053
2072
  ** ^(There can only be a single busy handler defined for each
2054
2073
  ** [database connection]. Setting a new busy handler clears any
2055
2074
  ** previously set handler.)^ ^Note that calling [sqlite3_busy_timeout()]
2056
- ** will also set or clear the busy handler.
2075
+ ** or evaluating [PRAGMA busy_timeout=N] will change the
2076
+ ** busy handler and thus clear any previously set busy handler.
2057
2077
  **
2058
2078
  ** The busy callback should not take any actions which modify the
2059
- ** database connection that invoked the busy handler. Any such actions
2079
+ ** database connection that invoked the busy handler. In other words,
2080
+ ** the busy handler is not reentrant. Any such actions
2060
2081
  ** result in undefined behavior.
2061
2082
  **
2062
2083
  ** A busy handler must not close the database connection
@@ -2072,7 +2093,7 @@ SQLITE_API int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
2072
2093
  ** will sleep multiple times until at least "ms" milliseconds of sleeping
2073
2094
  ** have accumulated. ^After at least "ms" milliseconds of sleeping,
2074
2095
  ** the handler returns 0 which causes [sqlite3_step()] to return
2075
- ** [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED].
2096
+ ** [SQLITE_BUSY].
2076
2097
  **
2077
2098
  ** ^Calling this routine with an argument less than or equal to zero
2078
2099
  ** turns off all busy handlers.
@@ -2081,6 +2102,8 @@ SQLITE_API int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
2081
2102
  ** [database connection] any any given moment. If another busy handler
2082
2103
  ** was defined (using [sqlite3_busy_handler()]) prior to calling
2083
2104
  ** this routine, that other busy handler is cleared.)^
2105
+ **
2106
+ ** See also: [PRAGMA busy_timeout]
2084
2107
  */
2085
2108
  SQLITE_API int sqlite3_busy_timeout(sqlite3*, int ms);
2086
2109
 
@@ -2375,11 +2398,13 @@ SQLITE_API sqlite3_int64 sqlite3_memory_highwater(int resetFlag);
2375
2398
  ** applications to access the same PRNG for other purposes.
2376
2399
  **
2377
2400
  ** ^A call to this routine stores N bytes of randomness into buffer P.
2401
+ ** ^If N is less than one, then P can be a NULL pointer.
2378
2402
  **
2379
- ** ^The first time this routine is invoked (either internally or by
2380
- ** the application) the PRNG is seeded using randomness obtained
2381
- ** from the xRandomness method of the default [sqlite3_vfs] object.
2382
- ** ^On all subsequent invocations, the pseudo-randomness is generated
2403
+ ** ^If this routine has not been previously called or if the previous
2404
+ ** call had N less than one, then the PRNG is seeded using randomness
2405
+ ** obtained from the xRandomness method of the default [sqlite3_vfs] object.
2406
+ ** ^If the previous call to this routine had an N of 1 or more then
2407
+ ** the pseudo-randomness is generated
2383
2408
  ** internally and without recourse to the [sqlite3_vfs] xRandomness
2384
2409
  ** method.
2385
2410
  */
@@ -2480,8 +2505,8 @@ SQLITE_API int sqlite3_set_authorizer(
2480
2505
  ** [sqlite3_set_authorizer | authorizer documentation] for additional
2481
2506
  ** information.
2482
2507
  **
2483
- ** Note that SQLITE_IGNORE is also used as a [SQLITE_ROLLBACK | return code]
2484
- ** from the [sqlite3_vtab_on_conflict()] interface.
2508
+ ** Note that SQLITE_IGNORE is also used as a [conflict resolution mode]
2509
+ ** returned from the [sqlite3_vtab_on_conflict()] interface.
2485
2510
  */
2486
2511
  #define SQLITE_DENY 1 /* Abort the SQL statement with an error */
2487
2512
  #define SQLITE_IGNORE 2 /* Don't allow access, but don't generate an error */
@@ -2539,6 +2564,7 @@ SQLITE_API int sqlite3_set_authorizer(
2539
2564
  #define SQLITE_FUNCTION 31 /* NULL Function Name */
2540
2565
  #define SQLITE_SAVEPOINT 32 /* Operation Savepoint Name */
2541
2566
  #define SQLITE_COPY 0 /* No longer used */
2567
+ #define SQLITE_RECURSIVE 33 /* NULL NULL */
2542
2568
 
2543
2569
  /*
2544
2570
  ** CAPI3REF: Tracing And Profiling Functions
@@ -2751,6 +2777,30 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
2751
2777
  ** ^If sqlite3_open_v2() is used and the "cache" parameter is present in
2752
2778
  ** a URI filename, its value overrides any behavior requested by setting
2753
2779
  ** SQLITE_OPEN_PRIVATECACHE or SQLITE_OPEN_SHAREDCACHE flag.
2780
+ **
2781
+ ** <li> <b>psow</b>: ^The psow parameter may be "true" (or "on" or "yes" or
2782
+ ** "1") or "false" (or "off" or "no" or "0") to indicate that the
2783
+ ** [powersafe overwrite] property does or does not apply to the
2784
+ ** storage media on which the database file resides. ^The psow query
2785
+ ** parameter only works for the built-in unix and Windows VFSes.
2786
+ **
2787
+ ** <li> <b>nolock</b>: ^The nolock parameter is a boolean query parameter
2788
+ ** which if set disables file locking in rollback journal modes. This
2789
+ ** is useful for accessing a database on a filesystem that does not
2790
+ ** support locking. Caution: Database corruption might result if two
2791
+ ** or more processes write to the same database and any one of those
2792
+ ** processes uses nolock=1.
2793
+ **
2794
+ ** <li> <b>immutable</b>: ^The immutable parameter is a boolean query
2795
+ ** parameter that indicates that the database file is stored on
2796
+ ** read-only media. ^When immutable is set, SQLite assumes that the
2797
+ ** database file cannot be changed, even by a process with higher
2798
+ ** privilege, and so the database is opened read-only and all locking
2799
+ ** and change detection is disabled. Caution: Setting the immutable
2800
+ ** property on a database file that does in fact change can result
2801
+ ** in incorrect query results and/or [SQLITE_CORRUPT] errors.
2802
+ ** See also: [SQLITE_IOCAP_IMMUTABLE].
2803
+ **
2754
2804
  ** </ul>
2755
2805
  **
2756
2806
  ** ^Specifying an unknown parameter in the query component of a URI is not an
@@ -2780,8 +2830,9 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
2780
2830
  ** Open file "data.db" in the current directory for read-only access.
2781
2831
  ** Regardless of whether or not shared-cache mode is enabled by
2782
2832
  ** default, use a private cache.
2783
- ** <tr><td> file:/home/fred/data.db?vfs=unix-nolock <td>
2784
- ** Open file "/home/fred/data.db". Use the special VFS "unix-nolock".
2833
+ ** <tr><td> file:/home/fred/data.db?vfs=unix-dotfile <td>
2834
+ ** Open file "/home/fred/data.db". Use the special VFS "unix-dotfile"
2835
+ ** that uses dot-files in place of posix advisory locking.
2785
2836
  ** <tr><td> file:data.db?mode=readonly <td>
2786
2837
  ** An error. "readonly" is not a valid option for the "mode" parameter.
2787
2838
  ** </table>
@@ -3957,15 +4008,24 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
3957
4008
  **
3958
4009
  ** ^The fourth parameter, eTextRep, specifies what
3959
4010
  ** [SQLITE_UTF8 | text encoding] this SQL function prefers for
3960
- ** its parameters. Every SQL function implementation must be able to work
3961
- ** with UTF-8, UTF-16le, or UTF-16be. But some implementations may be
3962
- ** more efficient with one encoding than another. ^An application may
3963
- ** invoke sqlite3_create_function() or sqlite3_create_function16() multiple
3964
- ** times with the same function but with different values of eTextRep.
4011
+ ** its parameters. The application should set this parameter to
4012
+ ** [SQLITE_UTF16LE] if the function implementation invokes
4013
+ ** [sqlite3_value_text16le()] on an input, or [SQLITE_UTF16BE] if the
4014
+ ** implementation invokes [sqlite3_value_text16be()] on an input, or
4015
+ ** [SQLITE_UTF16] if [sqlite3_value_text16()] is used, or [SQLITE_UTF8]
4016
+ ** otherwise. ^The same SQL function may be registered multiple times using
4017
+ ** different preferred text encodings, with different implementations for
4018
+ ** each encoding.
3965
4019
  ** ^When multiple implementations of the same function are available, SQLite
3966
4020
  ** will pick the one that involves the least amount of data conversion.
3967
- ** If there is only a single implementation which does not care what text
3968
- ** encoding is used, then the fourth argument should be [SQLITE_ANY].
4021
+ **
4022
+ ** ^The fourth parameter may optionally be ORed with [SQLITE_DETERMINISTIC]
4023
+ ** to signal that the function will always return the same result given
4024
+ ** the same inputs within a single SQL statement. Most SQL functions are
4025
+ ** deterministic. The built-in [random()] SQL function is an example of a
4026
+ ** function that is not deterministic. The SQLite query planner is able to
4027
+ ** perform additional optimizations on deterministic functions, so use
4028
+ ** of the [SQLITE_DETERMINISTIC] flag is recommended where possible.
3969
4029
  **
3970
4030
  ** ^(The fifth parameter is an arbitrary pointer. The implementation of the
3971
4031
  ** function can gain access to this pointer using [sqlite3_user_data()].)^
@@ -4051,9 +4111,19 @@ SQLITE_API int sqlite3_create_function_v2(
4051
4111
  #define SQLITE_UTF16LE 2
4052
4112
  #define SQLITE_UTF16BE 3
4053
4113
  #define SQLITE_UTF16 4 /* Use native byte order */
4054
- #define SQLITE_ANY 5 /* sqlite3_create_function only */
4114
+ #define SQLITE_ANY 5 /* Deprecated */
4055
4115
  #define SQLITE_UTF16_ALIGNED 8 /* sqlite3_create_collation only */
4056
4116
 
4117
+ /*
4118
+ ** CAPI3REF: Function Flags
4119
+ **
4120
+ ** These constants may be ORed together with the
4121
+ ** [SQLITE_UTF8 | preferred text encoding] as the fourth argument
4122
+ ** to [sqlite3_create_function()], [sqlite3_create_function16()], or
4123
+ ** [sqlite3_create_function_v2()].
4124
+ */
4125
+ #define SQLITE_DETERMINISTIC 0x800
4126
+
4057
4127
  /*
4058
4128
  ** CAPI3REF: Deprecated Functions
4059
4129
  ** DEPRECATED
@@ -4623,6 +4693,13 @@ SQLITE_API int sqlite3_sleep(int);
4623
4693
  ** is a NULL pointer, then SQLite performs a search for an appropriate
4624
4694
  ** temporary file directory.
4625
4695
  **
4696
+ ** Applications are strongly discouraged from using this global variable.
4697
+ ** It is required to set a temporary folder on Windows Runtime (WinRT).
4698
+ ** But for all other platforms, it is highly recommended that applications
4699
+ ** neither read nor write this variable. This global variable is a relic
4700
+ ** that exists for backwards compatibility of legacy applications and should
4701
+ ** be avoided in new projects.
4702
+ **
4626
4703
  ** It is not safe to read or modify this variable in more than one
4627
4704
  ** thread at a time. It is not safe to read or modify this variable
4628
4705
  ** if a [database connection] is being used at the same time in a separate
@@ -4641,6 +4718,11 @@ SQLITE_API int sqlite3_sleep(int);
4641
4718
  ** Hence, if this variable is modified directly, either it should be
4642
4719
  ** made NULL or made to point to memory obtained from [sqlite3_malloc]
4643
4720
  ** or else the use of the [temp_store_directory pragma] should be avoided.
4721
+ ** Except when requested by the [temp_store_directory pragma], SQLite
4722
+ ** does not free the memory that sqlite3_temp_directory points to. If
4723
+ ** the application wants that memory to be freed, it must do
4724
+ ** so itself, taking care to only do so after all [database connection]
4725
+ ** objects have been destroyed.
4644
4726
  **
4645
4727
  ** <b>Note to Windows Runtime users:</b> The temporary directory must be set
4646
4728
  ** prior to calling [sqlite3_open] or [sqlite3_open_v2]. Otherwise, various
@@ -5775,10 +5857,12 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*);
5775
5857
  ** <li> SQLITE_MUTEX_RECURSIVE
5776
5858
  ** <li> SQLITE_MUTEX_STATIC_MASTER
5777
5859
  ** <li> SQLITE_MUTEX_STATIC_MEM
5778
- ** <li> SQLITE_MUTEX_STATIC_MEM2
5860
+ ** <li> SQLITE_MUTEX_STATIC_OPEN
5779
5861
  ** <li> SQLITE_MUTEX_STATIC_PRNG
5780
5862
  ** <li> SQLITE_MUTEX_STATIC_LRU
5781
- ** <li> SQLITE_MUTEX_STATIC_LRU2
5863
+ ** <li> SQLITE_MUTEX_STATIC_PMEM
5864
+ ** <li> SQLITE_MUTEX_STATIC_APP1
5865
+ ** <li> SQLITE_MUTEX_STATIC_APP2
5782
5866
  ** </ul>)^
5783
5867
  **
5784
5868
  ** ^The first two constants (SQLITE_MUTEX_FAST and SQLITE_MUTEX_RECURSIVE)
@@ -5982,6 +6066,9 @@ SQLITE_API int sqlite3_mutex_notheld(sqlite3_mutex*);
5982
6066
  #define SQLITE_MUTEX_STATIC_LRU 6 /* lru page list */
5983
6067
  #define SQLITE_MUTEX_STATIC_LRU2 7 /* NOT USED */
5984
6068
  #define SQLITE_MUTEX_STATIC_PMEM 7 /* sqlite3PageMalloc() */
6069
+ #define SQLITE_MUTEX_STATIC_APP1 8 /* For use by application */
6070
+ #define SQLITE_MUTEX_STATIC_APP2 9 /* For use by application */
6071
+ #define SQLITE_MUTEX_STATIC_APP3 10 /* For use by application */
5985
6072
 
5986
6073
  /*
5987
6074
  ** CAPI3REF: Retrieve the mutex for a database connection
@@ -6075,7 +6162,10 @@ SQLITE_API int sqlite3_test_control(int op, ...);
6075
6162
  #define SQLITE_TESTCTRL_LOCALTIME_FAULT 18
6076
6163
  #define SQLITE_TESTCTRL_EXPLAIN_STMT 19
6077
6164
  #define SQLITE_TESTCTRL_NEVER_CORRUPT 20
6078
- #define SQLITE_TESTCTRL_LAST 20
6165
+ #define SQLITE_TESTCTRL_VDBE_COVERAGE 21
6166
+ #define SQLITE_TESTCTRL_BYTEORDER 22
6167
+ #define SQLITE_TESTCTRL_ISINIT 23
6168
+ #define SQLITE_TESTCTRL_LAST 23
6079
6169
 
6080
6170
  /*
6081
6171
  ** CAPI3REF: SQLite Runtime Status
@@ -7059,6 +7149,9 @@ SQLITE_API void *sqlite3_wal_hook(
7059
7149
  ** ^The [wal_autocheckpoint pragma] can be used to invoke this interface
7060
7150
  ** from SQL.
7061
7151
  **
7152
+ ** ^Checkpoints initiated by this mechanism are
7153
+ ** [sqlite3_wal_checkpoint_v2|PASSIVE].
7154
+ **
7062
7155
  ** ^Every new [database connection] defaults to having the auto-checkpoint
7063
7156
  ** enabled with a threshold of 1000 or [SQLITE_DEFAULT_WAL_AUTOCHECKPOINT]
7064
7157
  ** pages. The use of this interface
@@ -7075,6 +7168,10 @@ SQLITE_API int sqlite3_wal_autocheckpoint(sqlite3 *db, int N);
7075
7168
  ** empty string, then a checkpoint is run on all databases of
7076
7169
  ** connection D. ^If the database connection D is not in
7077
7170
  ** [WAL | write-ahead log mode] then this interface is a harmless no-op.
7171
+ ** ^The [sqlite3_wal_checkpoint(D,X)] interface initiates a
7172
+ ** [sqlite3_wal_checkpoint_v2|PASSIVE] checkpoint.
7173
+ ** Use the [sqlite3_wal_checkpoint_v2()] interface to get a FULL
7174
+ ** or RESET checkpoint.
7078
7175
  **
7079
7176
  ** ^The [wal_checkpoint pragma] can be used to invoke this interface
7080
7177
  ** from SQL. ^The [sqlite3_wal_autocheckpoint()] interface and the
@@ -7097,10 +7194,12 @@ SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb);
7097
7194
  ** Checkpoint as many frames as possible without waiting for any database
7098
7195
  ** readers or writers to finish. Sync the db file if all frames in the log
7099
7196
  ** are checkpointed. This mode is the same as calling
7100
- ** sqlite3_wal_checkpoint(). The busy-handler callback is never invoked.
7197
+ ** sqlite3_wal_checkpoint(). The [sqlite3_busy_handler|busy-handler callback]
7198
+ ** is never invoked.
7101
7199
  **
7102
7200
  ** <dt>SQLITE_CHECKPOINT_FULL<dd>
7103
- ** This mode blocks (calls the busy-handler callback) until there is no
7201
+ ** This mode blocks (it invokes the
7202
+ ** [sqlite3_busy_handler|busy-handler callback]) until there is no
7104
7203
  ** database writer and all readers are reading from the most recent database
7105
7204
  ** snapshot. It then checkpoints all frames in the log file and syncs the
7106
7205
  ** database file. This call blocks database writers while it is running,
@@ -7108,7 +7207,8 @@ SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb);
7108
7207
  **
7109
7208
  ** <dt>SQLITE_CHECKPOINT_RESTART<dd>
7110
7209
  ** This mode works the same way as SQLITE_CHECKPOINT_FULL, except after
7111
- ** checkpointing the log file it blocks (calls the busy-handler callback)
7210
+ ** checkpointing the log file it blocks (calls the
7211
+ ** [sqlite3_busy_handler|busy-handler callback])
7112
7212
  ** until all readers are reading from the database file only. This ensures
7113
7213
  ** that the next client to write to the database file restarts the log file
7114
7214
  ** from the beginning. This call blocks database writers while it is running,
@@ -7246,6 +7346,7 @@ SQLITE_API int sqlite3_vtab_on_conflict(sqlite3 *);
7246
7346
 
7247
7347
  /*
7248
7348
  ** CAPI3REF: Conflict resolution modes
7349
+ ** KEYWORDS: {conflict resolution mode}
7249
7350
  **
7250
7351
  ** These constants are returned by [sqlite3_vtab_on_conflict()] to
7251
7352
  ** inform a [virtual table] implementation what the [ON CONFLICT] mode
@@ -7298,6 +7399,16 @@ extern "C" {
7298
7399
  #endif
7299
7400
 
7300
7401
  typedef struct sqlite3_rtree_geometry sqlite3_rtree_geometry;
7402
+ typedef struct sqlite3_rtree_query_info sqlite3_rtree_query_info;
7403
+
7404
+ /* The double-precision datatype used by RTree depends on the
7405
+ ** SQLITE_RTREE_INT_ONLY compile-time option.
7406
+ */
7407
+ #ifdef SQLITE_RTREE_INT_ONLY
7408
+ typedef sqlite3_int64 sqlite3_rtree_dbl;
7409
+ #else
7410
+ typedef double sqlite3_rtree_dbl;
7411
+ #endif
7301
7412
 
7302
7413
  /*
7303
7414
  ** Register a geometry callback named zGeom that can be used as part of an
@@ -7308,11 +7419,7 @@ typedef struct sqlite3_rtree_geometry sqlite3_rtree_geometry;
7308
7419
  SQLITE_API int sqlite3_rtree_geometry_callback(
7309
7420
  sqlite3 *db,
7310
7421
  const char *zGeom,
7311
- #ifdef SQLITE_RTREE_INT_ONLY
7312
- int (*xGeom)(sqlite3_rtree_geometry*, int n, sqlite3_int64 *a, int *pRes),
7313
- #else
7314
- int (*xGeom)(sqlite3_rtree_geometry*, int n, double *a, int *pRes),
7315
- #endif
7422
+ int (*xGeom)(sqlite3_rtree_geometry*, int, sqlite3_rtree_dbl*,int*),
7316
7423
  void *pContext
7317
7424
  );
7318
7425
 
@@ -7324,11 +7431,60 @@ SQLITE_API int sqlite3_rtree_geometry_callback(
7324
7431
  struct sqlite3_rtree_geometry {
7325
7432
  void *pContext; /* Copy of pContext passed to s_r_g_c() */
7326
7433
  int nParam; /* Size of array aParam[] */
7327
- double *aParam; /* Parameters passed to SQL geom function */
7434
+ sqlite3_rtree_dbl *aParam; /* Parameters passed to SQL geom function */
7328
7435
  void *pUser; /* Callback implementation user data */
7329
7436
  void (*xDelUser)(void *); /* Called by SQLite to clean up pUser */
7330
7437
  };
7331
7438
 
7439
+ /*
7440
+ ** Register a 2nd-generation geometry callback named zScore that can be
7441
+ ** used as part of an R-Tree geometry query as follows:
7442
+ **
7443
+ ** SELECT ... FROM <rtree> WHERE <rtree col> MATCH $zQueryFunc(... params ...)
7444
+ */
7445
+ SQLITE_API int sqlite3_rtree_query_callback(
7446
+ sqlite3 *db,
7447
+ const char *zQueryFunc,
7448
+ int (*xQueryFunc)(sqlite3_rtree_query_info*),
7449
+ void *pContext,
7450
+ void (*xDestructor)(void*)
7451
+ );
7452
+
7453
+
7454
+ /*
7455
+ ** A pointer to a structure of the following type is passed as the
7456
+ ** argument to scored geometry callback registered using
7457
+ ** sqlite3_rtree_query_callback().
7458
+ **
7459
+ ** Note that the first 5 fields of this structure are identical to
7460
+ ** sqlite3_rtree_geometry. This structure is a subclass of
7461
+ ** sqlite3_rtree_geometry.
7462
+ */
7463
+ struct sqlite3_rtree_query_info {
7464
+ void *pContext; /* pContext from when function registered */
7465
+ int nParam; /* Number of function parameters */
7466
+ sqlite3_rtree_dbl *aParam; /* value of function parameters */
7467
+ void *pUser; /* callback can use this, if desired */
7468
+ void (*xDelUser)(void*); /* function to free pUser */
7469
+ sqlite3_rtree_dbl *aCoord; /* Coordinates of node or entry to check */
7470
+ unsigned int *anQueue; /* Number of pending entries in the queue */
7471
+ int nCoord; /* Number of coordinates */
7472
+ int iLevel; /* Level of current node or entry */
7473
+ int mxLevel; /* The largest iLevel value in the tree */
7474
+ sqlite3_int64 iRowid; /* Rowid for current entry */
7475
+ sqlite3_rtree_dbl rParentScore; /* Score of parent node */
7476
+ int eParentWithin; /* Visibility of parent node */
7477
+ int eWithin; /* OUT: Visiblity */
7478
+ sqlite3_rtree_dbl rScore; /* OUT: Write the score here */
7479
+ };
7480
+
7481
+ /*
7482
+ ** Allowed values for sqlite3_rtree_query.eWithin and .eParentWithin.
7483
+ */
7484
+ #define NOT_WITHIN 0 /* Object completely outside of query region */
7485
+ #define PARTLY_WITHIN 1 /* Object partially overlaps query region */
7486
+ #define FULLY_WITHIN 2 /* Object fully contained within query region */
7487
+
7332
7488
 
7333
7489
  #ifdef __cplusplus
7334
7490
  } /* end of the 'extern "C"' block */