gtktextbtree.inc 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. // included by gtk2.pas
  2. {$IFDEF read_forward_definitions}
  3. // internal type
  4. PGtkTextBTreeNode = pointer;
  5. // internal type
  6. PGtkTextBTree = pointer;
  7. PGtkTextLine = ^TGtkTextLine;
  8. {$ENDIF read_forward_definitions}
  9. //------------------------------------------------------------------------------
  10. {$IFDEF read_interface_types}
  11. { Lines }
  12. { Chunk of data associated with a line; views can use this to store
  13. info at the line. They should "subclass" the header struct here. }
  14. PGtkTextLineData = ^TGtkTextLineData;
  15. TGtkTextLineData = record
  16. view_id : gpointer;
  17. next : PGtkTextLineData;
  18. height : gint;
  19. flag0 : longint;
  20. end;
  21. {
  22. The data structure below defines a single line of text (from newline
  23. to newline, not necessarily what appears on one line of the screen).
  24. You can consider this line a "paragraph" also
  25. }
  26. { Pointer to parent node containing
  27. line. }
  28. { Next in linked list of lines with
  29. same parent node in B-tree. NULL
  30. means theEnd of list. }
  31. { First in ordered list of segments
  32. that make up the line. }
  33. { data stored here by views }
  34. TGtkTextLine = record
  35. parent : PGtkTextBTreeNode;
  36. next : PGtkTextLine;
  37. segments : PGtkTextLineSegment;
  38. views : PGtkTextLineData;
  39. end;
  40. {$ENDIF read_interface_types}
  41. //------------------------------------------------------------------------------
  42. {$IFDEF read_interface_rest}
  43. function _gtk_text_btree_new(table:PGtkTextTagTable; buffer:PGtkTextBuffer):PGtkTextBTree; cdecl; external gtklib;
  44. procedure _gtk_text_btree_ref(tree:PGtkTextBTree); cdecl; external gtklib;
  45. procedure _gtk_text_btree_unref(tree:PGtkTextBTree); cdecl; external gtklib;
  46. function _gtk_text_btree_get_buffer(tree:PGtkTextBTree):PGtkTextBuffer; cdecl; external gtklib;
  47. function _gtk_text_btree_get_chars_changed_stamp(tree:PGtkTextBTree):guint; cdecl; external gtklib;
  48. function _gtk_text_btree_get_segments_changed_stamp(tree:PGtkTextBTree):guint; cdecl; external gtklib;
  49. procedure _gtk_text_btree_segments_changed(tree:PGtkTextBTree); cdecl; external gtklib;
  50. function _gtk_text_btree_is_end(tree:PGtkTextBTree; line:PGtkTextLine; seg:PGtkTextLineSegment; byte_index:longint; char_offset:longint):gboolean; cdecl; external gtklib;
  51. { Indexable segment mutation }
  52. procedure _gtk_text_btree_delete(start:PGtkTextIter; theEnd:PGtkTextIter); cdecl; external gtklib;
  53. procedure _gtk_text_btree_insert(iter:PGtkTextIter; text:Pgchar; len:gint); cdecl; external gtklib;
  54. procedure _gtk_text_btree_insert_pixbuf(iter:PGtkTextIter; pixbuf:PGdkPixbuf); cdecl; external gtklib;
  55. procedure _gtk_text_btree_insert_child_anchor(iter:PGtkTextIter; anchor:PGtkTextChildAnchor); cdecl; external gtklib;
  56. procedure _gtk_text_btree_unregister_child_anchor(anchor:PGtkTextChildAnchor); cdecl; external gtklib;
  57. { View stuff }
  58. function _gtk_text_btree_find_line_by_y(tree:PGtkTextBTree; view_id:gpointer; ypixel:gint; line_top_y:Pgint):PGtkTextLine; cdecl; external gtklib;
  59. function _gtk_text_btree_find_line_top(tree:PGtkTextBTree; line:PGtkTextLine; view_id:gpointer):gint; cdecl; external gtklib;
  60. procedure _gtk_text_btree_add_view(tree:PGtkTextBTree; layout:PGtkTextLayout); cdecl; external gtklib;
  61. procedure _gtk_text_btree_remove_view(tree:PGtkTextBTree; view_id:gpointer); cdecl; external gtklib;
  62. procedure _gtk_text_btree_invalidate_region(tree:PGtkTextBTree; start:PGtkTextIter; theEnd:PGtkTextIter); cdecl; external gtklib;
  63. procedure _gtk_text_btree_get_view_size(tree:PGtkTextBTree; view_id:gpointer; width:Pgint; height:Pgint); cdecl; external gtklib;
  64. function _gtk_text_btree_is_valid(tree:PGtkTextBTree; view_id:gpointer):gboolean; cdecl; external gtklib;
  65. function _gtk_text_btree_validate(tree:PGtkTextBTree; view_id:gpointer; max_pixels:gint; y:Pgint; old_height:Pgint;
  66. new_height:Pgint):gboolean; cdecl; external gtklib;
  67. procedure _gtk_text_btree_validate_line(tree:PGtkTextBTree; line:PGtkTextLine; view_id:gpointer); cdecl; external gtklib;
  68. { Tag }
  69. procedure _gtk_text_btree_tag(start:PGtkTextIter; theEnd:PGtkTextIter; tag:PGtkTextTag; apply:gboolean); cdecl; external gtklib;
  70. { "Getters" }
  71. function _gtk_text_btree_get_line(tree:PGtkTextBTree; line_number:gint; real_line_number:Pgint):PGtkTextLine; cdecl; external gtklib;
  72. function _gtk_text_btree_get_line_no_last(tree:PGtkTextBTree; line_number:gint; real_line_number:Pgint):PGtkTextLine; cdecl; external gtklib;
  73. function _gtk_text_btree_get_end_iter_line(tree:PGtkTextBTree):PGtkTextLine; cdecl; external gtklib;
  74. function _gtk_text_btree_get_line_at_char(tree:PGtkTextBTree; char_index:gint; line_start_index:Pgint; real_char_index:Pgint):PGtkTextLine; cdecl; external gtklib;
  75. function _gtk_text_btree_get_tags(iter:PGtkTextIter; num_tags:Pgint):PPGtkTextTag; cdecl; external gtklib;
  76. function _gtk_text_btree_get_text(start:PGtkTextIter; theEnd:PGtkTextIter; include_hidden:gboolean; include_nonchars:gboolean):Pgchar; cdecl; external gtklib;
  77. function _gtk_text_btree_line_count(tree:PGtkTextBTree):gint; cdecl; external gtklib;
  78. function _gtk_text_btree_char_count(tree:PGtkTextBTree):gint; cdecl; external gtklib;
  79. function _gtk_text_btree_char_is_invisible(iter:PGtkTextIter):gboolean; cdecl; external gtklib;
  80. { Get iterators (these are implemented in gtktextiter.c) }
  81. procedure _gtk_text_btree_get_iter_at_char(tree:PGtkTextBTree; iter:PGtkTextIter; char_index:gint); cdecl; external gtklib;
  82. procedure _gtk_text_btree_get_iter_at_line_char(tree:PGtkTextBTree; iter:PGtkTextIter; line_number:gint; char_index:gint); cdecl; external gtklib;
  83. procedure _gtk_text_btree_get_iter_at_line_byte(tree:PGtkTextBTree; iter:PGtkTextIter; line_number:gint; byte_index:gint); cdecl; external gtklib;
  84. function _gtk_text_btree_get_iter_from_string(tree:PGtkTextBTree; iter:PGtkTextIter; _string:Pgchar):gboolean; cdecl; external gtklib;
  85. function _gtk_text_btree_get_iter_at_mark_name(tree:PGtkTextBTree; iter:PGtkTextIter; mark_name:Pgchar):gboolean; cdecl; external gtklib;
  86. procedure _gtk_text_btree_get_iter_at_mark(tree:PGtkTextBTree; iter:PGtkTextIter; mark:PGtkTextMark); cdecl; external gtklib;
  87. procedure _gtk_text_btree_get_end_iter(tree:PGtkTextBTree; iter:PGtkTextIter); cdecl; external gtklib;
  88. procedure _gtk_text_btree_get_iter_at_line(tree:PGtkTextBTree; iter:PGtkTextIter; line:PGtkTextLine; byte_offset:gint); cdecl; external gtklib;
  89. function _gtk_text_btree_get_iter_at_first_toggle(tree:PGtkTextBTree; iter:PGtkTextIter; tag:PGtkTextTag):gboolean; cdecl; external gtklib;
  90. function _gtk_text_btree_get_iter_at_last_toggle(tree:PGtkTextBTree; iter:PGtkTextIter; tag:PGtkTextTag):gboolean; cdecl; external gtklib;
  91. procedure _gtk_text_btree_get_iter_at_child_anchor(tree:PGtkTextBTree; iter:PGtkTextIter; anchor:PGtkTextChildAnchor); cdecl; external gtklib;
  92. { Manipulate marks }
  93. function _gtk_text_btree_set_mark(tree:PGtkTextBTree; existing_mark:PGtkTextMark; name:Pgchar; left_gravity:gboolean; index:PGtkTextIter;
  94. should_exist:gboolean):PGtkTextMark; cdecl; external gtklib;
  95. procedure _gtk_text_btree_remove_mark_by_name(tree:PGtkTextBTree; name:Pgchar); cdecl; external gtklib;
  96. procedure _gtk_text_btree_remove_mark(tree:PGtkTextBTree; segment:PGtkTextMark); cdecl; external gtklib;
  97. function _gtk_text_btree_get_selection_bounds(tree:PGtkTextBTree; start:PGtkTextIter; theEnd:PGtkTextIter):gboolean; cdecl; external gtklib;
  98. procedure _gtk_text_btree_place_cursor(tree:PGtkTextBTree; where:PGtkTextIter); cdecl; external gtklib;
  99. function _gtk_text_btree_mark_is_insert(tree:PGtkTextBTree; segment:PGtkTextMark):gboolean; cdecl; external gtklib;
  100. function _gtk_text_btree_mark_is_selection_bound(tree:PGtkTextBTree; segment:PGtkTextMark):gboolean; cdecl; external gtklib;
  101. function _gtk_text_btree_get_mark_by_name(tree:PGtkTextBTree; name:Pgchar):PGtkTextMark; cdecl; external gtklib;
  102. function _gtk_text_btree_first_could_contain_tag(tree:PGtkTextBTree; tag:PGtkTextTag):PGtkTextLine; cdecl; external gtklib;
  103. function _gtk_text_btree_last_could_contain_tag(tree:PGtkTextBTree; tag:PGtkTextTag):PGtkTextLine; cdecl; external gtklib;
  104. const
  105. bm_TGtkTextLineData_width = $FFFFFF;
  106. bp_TGtkTextLineData_width = 0;
  107. bm_TGtkTextLineData_valid = $FF000000;
  108. bp_TGtkTextLineData_valid = 24;
  109. function width(a : PGtkTextLineData) : gint;
  110. procedure set_width(a : PGtkTextLineData; NewWidth : gint);
  111. function valid(a : PGtkTextLineData) : gint;
  112. procedure set_valid(a : PGtkTextLineData; __valid : gint);
  113. function _gtk_text_line_get_number(line:PGtkTextLine):gint; cdecl; external gtklib;
  114. function _gtk_text_line_char_has_tag(line:PGtkTextLine; tree:PGtkTextBTree; char_in_line:gint; tag:PGtkTextTag):gboolean; cdecl; external gtklib;
  115. function _gtk_text_line_byte_has_tag(line:PGtkTextLine; tree:PGtkTextBTree; byte_in_line:gint; tag:PGtkTextTag):gboolean; cdecl; external gtklib;
  116. function _gtk_text_line_is_last(line:PGtkTextLine; tree:PGtkTextBTree):gboolean; cdecl; external gtklib;
  117. function _gtk_text_line_contains_end_iter(line:PGtkTextLine; tree:PGtkTextBTree):gboolean; cdecl; external gtklib;
  118. function _gtk_text_line_next(line:PGtkTextLine):PGtkTextLine; cdecl; external gtklib;
  119. function _gtk_text_line_next_excluding_last(line:PGtkTextLine):PGtkTextLine; cdecl; external gtklib;
  120. function _gtk_text_line_previous(line:PGtkTextLine):PGtkTextLine; cdecl; external gtklib;
  121. procedure _gtk_text_line_add_data(line:PGtkTextLine; data:PGtkTextLineData); cdecl; external gtklib;
  122. function _gtk_text_line_remove_data(line:PGtkTextLine; view_id:gpointer):gpointer; cdecl; external gtklib;
  123. function _gtk_text_line_get_data(line:PGtkTextLine; view_id:gpointer):gpointer; cdecl; external gtklib;
  124. procedure _gtk_text_line_invalidate_wrap(line:PGtkTextLine; ld:PGtkTextLineData); cdecl; external gtklib;
  125. function _gtk_text_line_char_count(line:PGtkTextLine):gint; cdecl; external gtklib;
  126. function _gtk_text_line_byte_count(line:PGtkTextLine):gint; cdecl; external gtklib;
  127. function _gtk_text_line_char_index(line:PGtkTextLine):gint; cdecl; external gtklib;
  128. function _gtk_text_line_byte_to_segment(line:PGtkTextLine; byte_offset:gint; seg_offset:Pgint):PGtkTextLineSegment; cdecl; external gtklib;
  129. function _gtk_text_line_char_to_segment(line:PGtkTextLine; char_offset:gint; seg_offset:Pgint):PGtkTextLineSegment; cdecl; external gtklib;
  130. function _gtk_text_line_byte_locate(line:PGtkTextLine; byte_offset:gint; var segment:PGtkTextLineSegment; var any_segment:PGtkTextLineSegment; var seg_byte_offset:gint;
  131. line_byte_offset:Pgint):gboolean; cdecl; external gtklib;
  132. function _gtk_text_line_char_locate(line:PGtkTextLine; char_offset:gint; var segment:PGtkTextLineSegment; var any_segment:PGtkTextLineSegment; var seg_char_offset:gint;
  133. line_char_offset:Pgint):gboolean; cdecl; external gtklib;
  134. procedure _gtk_text_line_byte_to_char_offsets(line:PGtkTextLine; byte_offset:gint; line_char_offset:Pgint; seg_char_offset:Pgint); cdecl; external gtklib;
  135. procedure _gtk_text_line_char_to_byte_offsets(line:PGtkTextLine; char_offset:gint; line_byte_offset:Pgint; seg_byte_offset:Pgint); cdecl; external gtklib;
  136. function _gtk_text_line_byte_to_any_segment(line:PGtkTextLine; byte_offset:gint; seg_offset:Pgint):PGtkTextLineSegment; cdecl; external gtklib;
  137. function _gtk_text_line_char_to_any_segment(line:PGtkTextLine; char_offset:gint; seg_offset:Pgint):PGtkTextLineSegment; cdecl; external gtklib;
  138. function _gtk_text_line_byte_to_char(line:PGtkTextLine; byte_offset:gint):gint; cdecl; external gtklib;
  139. function _gtk_text_line_char_to_byte(line:PGtkTextLine; char_offset:gint):gint; cdecl; external gtklib;
  140. function _gtk_text_line_next_could_contain_tag(line:PGtkTextLine; tree:PGtkTextBTree; tag:PGtkTextTag):PGtkTextLine; cdecl; external gtklib;
  141. function _gtk_text_line_previous_could_contain_tag(line:PGtkTextLine; tree:PGtkTextBTree; tag:PGtkTextTag):PGtkTextLine; cdecl; external gtklib;
  142. function _gtk_text_line_data_new(layout:PGtkTextLayout; line:PGtkTextLine):PGtkTextLineData; cdecl; external gtklib;
  143. { Debug }
  144. procedure _gtk_text_btree_check(tree:PGtkTextBTree); cdecl; external gtklib;
  145. procedure _gtk_text_btree_spew(tree:PGtkTextBTree); cdecl; external gtklib;
  146. { ignore, exported only for gtktextsegment.c }
  147. procedure _gtk_toggle_segment_check_func(segPtr:PGtkTextLineSegment; line:PGtkTextLine); cdecl; external gtklib;
  148. procedure _gtk_change_node_toggle_count(node:PGtkTextBTreeNode; info:PGtkTextTagInfo; delta:gint); cdecl; external gtklib;
  149. { for gtktextmark.c }
  150. procedure _gtk_text_btree_release_mark_segment(tree:PGtkTextBTree; segment:PGtkTextLineSegment); cdecl; external gtklib;
  151. { for coordination with the tag table }
  152. procedure _gtk_text_btree_notify_will_remove_tag(tree:PGtkTextBTree; tag:PGtkTextTag); cdecl; external gtklib;
  153. {$ENDIF read_interface_rest}
  154. //------------------------------------------------------------------------------
  155. {$IFDEF read_implementation}
  156. function width(a : PGtkTextLineData) : gint;
  157. begin
  158. width:=a^.flag0 and bm_TGtkTextLineData_width;
  159. end;
  160. procedure set_width(a : PGtkTextLineData; NewWidth : gint);
  161. begin
  162. a^.flag0:=(bm_TGtkTextLineData_width and NewWidth) or a^.flag0;
  163. end;
  164. function valid(a : PGtkTextLineData) : gint;
  165. begin
  166. valid:=(a^.flag0 and bm_TGtkTextLineData_valid) shr bp_TGtkTextLineData_valid;
  167. end;
  168. procedure set_valid(a : PGtkTextLineData; __valid : gint);
  169. begin
  170. a^.flag0:=a^.flag0 or ((__valid shl bp_TGtkTextLineData_valid) and bm_TGtkTextLineData_valid);
  171. end;
  172. {$ENDIF read_implementation}
  173. // included by gtk2.pas