#ifndef LINE_ED_HL_RANGE_H_ #define LINE_ED_HL_RANGE_H_ #include #include struct line_ed; enum hl_range_comparison { HL_RANGE_LESS, HL_RANGE_LESS_OVERLAP, HL_RANGE_EQUAL, HL_RANGE_A_IN_B, HL_RANGE_B_IN_A, HL_RANGE_GREATER_OVERLAP, HL_RANGE_GREATER, }; struct hl_range { size_t h_start_x, h_start_y; size_t h_end_x, h_end_y; b_tty_vmode h_vmode; b_queue_entry h_entry; }; extern int compare_coords(size_t ax, size_t ay, size_t bx, size_t by); extern struct hl_range *get_hl_range(struct line_ed *ed, size_t x, size_t y); extern struct hl_range *get_next_hl_range(struct hl_range *range); extern int apply_hl_range(struct hl_range *range, b_tty *tty, size_t x, size_t y); extern struct hl_range *create_highlight( size_t start_x, size_t start_y, size_t end_x, size_t end_y, const struct b_tty_vmode *vmode); extern enum hl_range_comparison compare_hl_ranges( const struct hl_range *a, const struct hl_range *b); #endif