/****************************************************************************
 * This file is part of the project AqDiagram.
 * AqDiagram (c) by 2024 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_GRAPH_GRAPH_H
#define AQDG_GRAPH_GRAPH_H

#include <aqdiagram/aqdg_api.h>


enum {
  AQDG_GRAPH_TYPE_UNKNOWN=-1,
  AQDG_GRAPH_TYPE_NONE=0,
  AQDG_GRAPH_TYPE_LINE,
  AQDG_GRAPH_TYPE_POINTS,
  AQDG_GRAPH_TYPE_BARS,
  AQDG_GRAPH_TYPE_STEPLINE
};



enum {
  AQDG_GRAPH_AXISPOS_LEFT=0,
  AQDG_GRAPH_AXISPOS_BOTTOM,
  AQDG_GRAPH_AXISPOS_RIGHT,
  AQDG_GRAPH_AXISPOS_TOP
};



enum {
  AQDG_GRAPH_DATATYPE_INT=0,
  AQDG_GRAPH_DATATYPE_DOUBLE,
  AQDG_GRAPH_DATATYPE_DATE
};


typedef struct AQDG_GRAPH AQDG_GRAPH;


#include <aqdiagram/graph/axis.h>
#include <aqdiagram/graph/subgraph.h>
#include "aqdiagram/draw/context.h"


#ifdef __cplusplus
extern "C" {
#endif



AQDG_API AQDG_GRAPH *AQDG_Graph_new(void);
AQDG_API void AQDG_Graph_free(AQDG_GRAPH *g);

AQDG_API const char *AQDG_Graph_GetTitle(const AQDG_GRAPH *g);
AQDG_API void AQDG_Graph_SetTitle(AQDG_GRAPH *g, const char *s);

AQDG_API const char *AQDG_Graph_GetSubTitle(const AQDG_GRAPH *g);
AQDG_API void AQDG_Graph_SetSubTitle(AQDG_GRAPH *g, const char *s);


AQDG_API AQDG_GRAPH_AXIS *AQDG_Graph_GetAxisByIndex(const AQDG_GRAPH *g, int idx);
AQDG_API int AQDG_Graph_SetAxis(AQDG_GRAPH *g, int idx, AQDG_GRAPH_AXIS *ax);


AQDG_API AQDG_GRAPH_SUBGRAPH_LIST *AQDG_Graph_GetSubGraphList(const AQDG_GRAPH *g);
AQDG_API void AQDG_Graph_AddSubGraph(AQDG_GRAPH *g, AQDG_GRAPH_SUBGRAPH *sg);
AQDG_API AQDG_GRAPH_SUBGRAPH *AQDG_Graph_GetFirstSubGraph(const AQDG_GRAPH *g);

AQDG_API AQDG_DRAW_CONTEXT *AQDG_Graph_GetDrawContext(const AQDG_GRAPH *g);
AQDG_API void AQDG_Graph_SetDrawContext(AQDG_GRAPH *g, AQDG_DRAW_CONTEXT *dc);

AQDG_API void AQDG_Graph_CalcMinMaxValues(AQDG_GRAPH *g);



#ifdef __cplusplus
}
#endif

#endif


