#ifndef modern_row_h__
#define modern_row_h__

#pragma once


// Types of cells
#define TC_TEXT1 1
#define TC_TEXT2 2
#define TC_TEXT3 3
#define TC_STATUS 4
#define TC_AVATAR 5
#define TC_EXTRA 6
#define TC_EXTRA1 7
#define TC_EXTRA2 8
#define TC_EXTRA3 9
#define TC_EXTRA4 10
#define TC_EXTRA5 11
#define TC_EXTRA6 12
#define TC_EXTRA7 13
#define TC_EXTRA8 14
#define TC_EXTRA9 15
#define TC_TIME 16
#define TC_SPACE 17
#define TC_FIXED 18


#define TC_ELEMENTSCOUNT 18

// Containers
#define TC_ROOT 50
#define TC_ROW 51
#define TC_COL 52
#define TC_FLOAT 53

// Alignes
#define TC_LEFT 0
#define TC_HCENTER 100
#define TC_RIGHT 101

#define TC_TOP 0
#define TC_VCENTER 102
#define TC_BOTTOM 103

// Sizes
#define TC_WIDTH 104
#define TC_HEIGHT 105



// Структура, описывающая контейнер элемента контакта
//
typedef struct tagRowCell
{
	int cont;				// Тип контейнера - контакт, сторока, столбец
	int type;				// Тип элемента, содержащегося в контейнере, если 0 - пустой контейнер
	int halign;				// Горизонтальное выравнивание внутри контейнера
	int valign;				// Вертикальное выравнивание внутри контейнера

	int	w;					// Ширина элемента контакта, для текстовых полей игнорируется
	int	h;					// Высота элемента котнакта

	BOOL sizing;			// Параметр, показывающий наличие текстовых полей в дочерних контейнерах
	BOOL layer;				// Параметр, показывающий, что контейнер образует новый слой
  
  BOOL hasfixed;    // Параметр показывающий что есть вложенные фиксированные элементы
  BOOL fitwidth;    // Параметр указывающий что последний элемент заполняет все оставшееся 
                    // Пространство (расстягивает родителя.оверлей)

  int fixed_width;
  int full_width;

	RECT r;					// Прямоугольник для рисования элемента
	struct tagRowCell * next;		// Поле связи 
	struct tagRowCell * child;		// Поле связи см. файл описания
} ROWCELL, *pROWCELL;

// Структура для доступа к контейнерам элемента контакта внутри дерева опивания
#ifndef _CPPCODE
  int cppCalculateRowHeight(ROWCELL	*RowRoot);
  void cppCalculateRowItemsPos(ROWCELL	*RowRoot, int width);
  ROWCELL *cppInitModernRow(ROWCELL	** tabAccess);
  void cppDeleteTree(ROWCELL	* RowRoot);
#endif

#endif // modern_row_h__