/*
4coder_layout_rule.h - Built in layout rule types.
*/

// TOP

#if !defined(FCODER_LAYOUT_RULE_H)
#define FCODER_LAYOUT_RULE_H

struct Newline_Layout_Vars{
    i64 newline_character_index;
    b32 consuming_newline_characters;
    b32 prev_did_emit_newline;
};

struct LefRig_TopBot_Layout_Vars{
    Face_Advance_Map  *advance_map;
    Face_Metrics *metrics;
    f32 line_to_text_shift;
    
    Vec2_f32 blank_dim;
    
    Vec2_f32 p;
    f32 line_y;
    f32 text_y;
    f32 width;
};

struct Layout_Reflex{
    Layout_Item_List *list;
    Buffer_ID buffer;
    f32 width;
    Face_ID face;
};

typedef i32 Layout_Wrap_Kind;
enum{
    Layout_Unwrapped,
    Layout_Wrapped,
};

typedef i32 Layout_Virtual_Indent;
enum{
    LayoutVirtualIndent_Off,
    LayoutVirtualIndent_On,
};

#endif

// BOTTOM