Files
ivy/frontend/line-ed/hl-range.h

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