/****************************************************************************
 * This file is part of the project AqDiagram.
 * AqDiagram (c) by 2023 Martin Preuss, all rights reserved.
 *
 * The license for this file can be found in the file COPYING which you
 * should have received along with this file.
 ****************************************************************************/

#ifndef AQDG_PLACEMENT_O_LAYOUT_H
#define AQDG_PLACEMENT_O_LAYOUT_H

#include <aqdiagram/aqdg_api.h>

#include <aqdiagram/placement/object.h>
#include <aqdiagram/placement/layout.h>



AQDG_API int AQDG_LayoutObject_CountDirectChildren(const AQDG_OBJECT *object);

AQDG_API AQDG_PLACEMENT_LAYOUT_ELEMENT *AQDG_LayoutObject_Children2ElementsX(const AQDG_OBJECT *object, int num);
AQDG_API AQDG_PLACEMENT_LAYOUT_ELEMENT *AQDG_LayoutObject_ObjectList2ElementsX(AQDG_OBJECT *object, int num);

AQDG_API AQDG_PLACEMENT_LAYOUT_ELEMENT *AQDG_LayoutObject_Children2ElementsY(const AQDG_OBJECT *object, int num);
AQDG_API AQDG_PLACEMENT_LAYOUT_ELEMENT *AQDG_LayoutObject_ObjectList2ElementsY(const AQDG_OBJECT *object, int num);

AQDG_API void AQDG_LayoutObject_ChildrenFromElementsX(AQDG_OBJECT *object, const AQDG_PLACEMENT_LAYOUT_ELEMENT *elements, int num);
AQDG_API void AQDG_LayoutObject_Elements2ObjectListX(AQDG_OBJECT *object, const AQDG_PLACEMENT_LAYOUT_ELEMENT *elements, int num);

AQDG_API void AQDG_LayoutObject_ChildrenFromElementsY(AQDG_OBJECT *object, const AQDG_PLACEMENT_LAYOUT_ELEMENT *elements, int num);
AQDG_API void AQDG_LayoutObject_Elements2ObjectListY(AQDG_OBJECT *object, const AQDG_PLACEMENT_LAYOUT_ELEMENT *elements, int num);

AQDG_API void AQDG_LayoutObject_SetChildrenWidths(AQDG_OBJECT *object);
AQDG_API void AQDG_LayoutObject_SetChildrenHeights(AQDG_OBJECT *object);

AQDG_API void AQDG_LayoutObject_LayoutChildren(AQDG_OBJECT *o);




#endif

