// -*- C++ -*- //

#ifndef ALL_INCLUDE_H
#define ALL_INCLUDE_H

#include <fstream>
#include <iostream>

#include <vector>

#include <lemon/list_graph.h>
#include <lemon/graph_reader.h>
#include <lemon/graph_writer.h>
#include <lemon/graph_utils.h>
#include <lemon/maps.h>
#include <lemon/error.h>
#include <lemon/xy.h>

enum {E_WIDTH, E_COLOR, E_TEXT, EDGE_PROPERTY_NUM}; // edge properties;
enum {N_RADIUS, N_COLOR, N_TEXT, NODE_PROPERTY_NUM}; // node properties;
enum {MOVE, CREATE_NODE, CREATE_EDGE, ERASER, EDGE_MAP_EDIT, NODE_MAP_EDIT, TOOL_NUM}; // tools;
#define RANGE 3
#define WIN_WIDTH 900
#define WIN_HEIGHT 600
#define ALMOST_ONE 0.9999999999

#ifndef MAIN_PART
extern std::vector <std::string> edge_property_strings;
extern std::vector <double> edge_property_defaults;
extern std::vector <std::string> node_property_strings;
extern std::vector <double> node_property_defaults;
#endif //MAIN_PART

using namespace lemon;

typedef xy<double> Coordinates;
typedef ListGraph Graph;
typedef Graph::NodeMap<Coordinates> CoordinatesMap;
typedef Graph::Node Node;
typedef Graph::EdgeIt EdgeIt;
typedef Graph::NodeIt NodeIt;

#endif // ALL_INCLUDE_H
