#pragma once
namespace taitank {
enum TaitankDirection {
DIRECTION_INHERIT,
DIRECTION_LTR,
DIRECTION_RTL,
};
enum FlexDirection {
FLEX_DIRECTION_ROW,
FLEX_DIRECTION_ROW_REVERSE,
FLEX_DIRECTION_COLUMN,
FLEX_DIRECTION_COLUNM_REVERSE,
};
enum FlexWrapMode {
FLEX_NO_WRAP,
FLEX_WRAP,
FLEX_WRAP_REVERSE,
};
enum FlexAlign {
FLEX_ALIGN_AUTO,
FLEX_ALIGN_START,
FLEX_ALIGN_CENTER,
FLEX_ALIGN_END,
FLEX_ALIGN_STRETCH,
FLEX_ALIGN_BASE_LINE,
FLEX_ALIGN_SPACE_BETWEEN,
FLEX_ALIGN_SPACE_AROUND,
FLEX_ALIGN_SPACE_EVENLY,
};
typedef struct TaitankSize {
float width;
float height;
} TaitankSize;
enum CSSDirection {
CSS_LEFT = 0,
CSS_TOP,
CSS_RIGHT,
CSS_BOTTOM,
CSS_START,
CSS_END,
CSS_HORIZONTAL,
CSS_VERTICAL,
CSS_ALL,
CSS_NONE = -1,
};
enum Dimension {
DIMENSION_WIDTH = 0,
DIMENSION_HEIGHT,
};
enum PositionType {
POSITION_TYPE_RELATIVE,
POSITION_TYPE_ABSOLUTE,
};
enum DisplayType {
DISPLAY_TYPE_FLEX,
DISPLAY_TYPE_NONE,
};
enum OverflowType {
OVERFLOW_VISIBLE,
OVERFLOW_HIDDEN,
OVERFLOW_SCROLL,
};
enum NodeType {
NODETYPE_DEFAULT,
NODETYPE_TEXT,
};
struct TaitankLayout {
float position[4];
float cached_position[4];
float dim[2];
float margin[4];
float padding[4];
float border[4];
bool had_overflow;
TaitankDirection direction;
float flex_base_size;
float hypothetical_main_axis_margin_boxsize;
float hypothetical_main_axis_size;
};
enum FlexLayoutAction {
LAYOUT_ACTION_MEASURE_WIDTH = 1,
LAYOUT_ACTION_MEASURE_HEIGHT = 2,
LAYOUT_ACTION_LAYOUT = 3,
};
enum MeasureMode {
MEASURE_MODE_UNDEFINED,
MEASURE_MODE_EXACTLY,
MEASURE_MODE_AT_MOST,
};
struct TaitankSizeMode {
MeasureMode width_measure_mode;
MeasureMode height_measure_mode;
};
extern const CSSDirection kAxisStart[4];
extern const CSSDirection kAxisEnd[4];
extern const Dimension kAxisDim[4];
bool inline IsRowDirection(FlexDirection dir) {
return dir == FLEX_DIRECTION_ROW || dir == FLEX_DIRECTION_ROW_REVERSE;
}
bool inline IsColumnDirection(FlexDirection dir) {
return dir == FLEX_DIRECTION_COLUMN || dir == FLEX_DIRECTION_COLUNM_REVERSE;
}
bool inline IsReverseDirection(FlexDirection dir) {
return dir == FLEX_DIRECTION_COLUNM_REVERSE || dir == FLEX_DIRECTION_ROW_REVERSE;
}
}