39 lines
977 B
C
39 lines
977 B
C
#ifndef LINE_ED_HL_RANGE_H_
|
|
#define LINE_ED_HL_RANGE_H_
|
|
|
|
#include <blue/term/tty.h>
|
|
|
|
#include <blue/core/queue.h>
|
|
|
|
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
|