gravatar
alpar (Alpar Juttner)
alpar@cs.elte.hu
Set the compatibily related MSVC defines only if they has't been defined yet
0 2 0
default
2 files changed with 8 insertions and 0 deletions:
↑ Collapse diff ↑
Ignore white space 6 line context
1 1
/* -*- mode: C++; indent-tabs-mode: nil; -*-
2 2
 *
3 3
 * This file is a part of LEMON, a generic C++ optimization library.
4 4
 *
5 5
 * Copyright (C) 2003-2008
6 6
 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
7 7
 * (Egervary Research Group on Combinatorial Optimization, EGRES).
8 8
 *
9 9
 * Permission to use, modify and distribute this software is granted
10 10
 * provided that this copyright notice appears in all copies. For
11 11
 * precise terms see the accompanying LICENSE file.
12 12
 *
13 13
 * This software is provided "AS IS" with no warranty of any kind,
14 14
 * express or implied, and with no claim as to its suitability for any
15 15
 * purpose.
16 16
 *
17 17
 */
18 18

	
19 19
#ifndef LEMON_GRAPH_TO_EPS_H
20 20
#define LEMON_GRAPH_TO_EPS_H
21 21

	
22 22
#include<iostream>
23 23
#include<fstream>
24 24
#include<sstream>
25 25
#include<algorithm>
26 26
#include<vector>
27 27

	
28 28
#ifndef WIN32
29 29
#include<sys/time.h>
30 30
#include<ctime>
31 31
#else
32
#ifndef WIN32_LEAN_AND_MEAN
32 33
#define WIN32_LEAN_AND_MEAN
34
#endif
35
#ifndef NOMINMAX
33 36
#define NOMINMAX
37
#endif
34 38
#include<windows.h>
35 39
#endif
36 40

	
37 41
#include<lemon/math.h>
38 42
#include<lemon/core.h>
39 43
#include<lemon/dim2.h>
40 44
#include<lemon/maps.h>
41 45
#include<lemon/color.h>
42 46
#include<lemon/bits/bezier.h>
43 47
#include<lemon/error.h>
44 48

	
45 49

	
46 50
///\ingroup eps_io
47 51
///\file
48 52
///\brief A well configurable tool for visualizing graphs
49 53

	
50 54
namespace lemon {
51 55

	
52 56
  namespace _graph_to_eps_bits {
53 57
    template<class MT>
54 58
    class _NegY {
55 59
    public:
56 60
      typedef typename MT::Key Key;
57 61
      typedef typename MT::Value Value;
58 62
      const MT &map;
59 63
      int yscale;
60 64
      _NegY(const MT &m,bool b) : map(m), yscale(1-b*2) {}
61 65
      Value operator[](Key n) { return Value(map[n].x,map[n].y*yscale);}
62 66
    };
63 67
  }
64 68

	
65 69
///Default traits class of GraphToEps
66 70

	
67 71
///Default traits class of \ref GraphToEps.
68 72
///
69 73
///\c G is the type of the underlying graph.
70 74
template<class G>
71 75
struct DefaultGraphToEpsTraits
72 76
{
73 77
  typedef G Graph;
74 78
  typedef typename Graph::Node Node;
75 79
  typedef typename Graph::NodeIt NodeIt;
76 80
  typedef typename Graph::Arc Arc;
77 81
  typedef typename Graph::ArcIt ArcIt;
78 82
  typedef typename Graph::InArcIt InArcIt;
79 83
  typedef typename Graph::OutArcIt OutArcIt;
80 84

	
81 85

	
82 86
  const Graph &g;
83 87

	
84 88
  std::ostream& os;
85 89

	
86 90
  typedef ConstMap<typename Graph::Node,dim2::Point<double> > CoordsMapType;
87 91
  CoordsMapType _coords;
88 92
  ConstMap<typename Graph::Node,double > _nodeSizes;
89 93
  ConstMap<typename Graph::Node,int > _nodeShapes;
90 94

	
91 95
  ConstMap<typename Graph::Node,Color > _nodeColors;
92 96
  ConstMap<typename Graph::Arc,Color > _arcColors;
93 97

	
94 98
  ConstMap<typename Graph::Arc,double > _arcWidths;
95 99

	
96 100
  double _arcWidthScale;
97 101

	
98 102
  double _nodeScale;
99 103
  double _xBorder, _yBorder;
100 104
  double _scale;
101 105
  double _nodeBorderQuotient;
102 106

	
103 107
  bool _drawArrows;
104 108
  double _arrowLength, _arrowWidth;
105 109

	
106 110
  bool _showNodes, _showArcs;
107 111

	
108 112
  bool _enableParallel;
109 113
  double _parArcDist;
110 114

	
111 115
  bool _showNodeText;
112 116
  ConstMap<typename Graph::Node,bool > _nodeTexts;
113 117
  double _nodeTextSize;
114 118

	
115 119
  bool _showNodePsText;
116 120
  ConstMap<typename Graph::Node,bool > _nodePsTexts;
117 121
  char *_nodePsTextsPreamble;
118 122

	
119 123
  bool _undirected;
120 124

	
121 125
  bool _pleaseRemoveOsStream;
122 126

	
123 127
  bool _scaleToA4;
124 128

	
125 129
  std::string _title;
126 130
  std::string _copyright;
127 131

	
128 132
  enum NodeTextColorType
129 133
    { DIST_COL=0, DIST_BW=1, CUST_COL=2, SAME_COL=3 } _nodeTextColorType;
Ignore white space 192 line context
1 1
/* -*- mode: C++; indent-tabs-mode: nil; -*-
2 2
 *
3 3
 * This file is a part of LEMON, a generic C++ optimization library.
4 4
 *
5 5
 * Copyright (C) 2003-2008
6 6
 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
7 7
 * (Egervary Research Group on Combinatorial Optimization, EGRES).
8 8
 *
9 9
 * Permission to use, modify and distribute this software is granted
10 10
 * provided that this copyright notice appears in all copies. For
11 11
 * precise terms see the accompanying LICENSE file.
12 12
 *
13 13
 * This software is provided "AS IS" with no warranty of any kind,
14 14
 * express or implied, and with no claim as to its suitability for any
15 15
 * purpose.
16 16
 *
17 17
 */
18 18

	
19 19
#ifndef LEMON_TIME_MEASURE_H
20 20
#define LEMON_TIME_MEASURE_H
21 21

	
22 22
///\ingroup timecount
23 23
///\file
24 24
///\brief Tools for measuring cpu usage
25 25

	
26 26
#ifdef WIN32
27
#ifndef WIN32_LEAN_AND_MEAN
27 28
#define WIN32_LEAN_AND_MEAN
29
#endif
30
#ifndef NOMINMAX
28 31
#define NOMINMAX
32
#endif
29 33
#include <windows.h>
30 34
#include <cmath>
31 35
#else
32 36
#include <unistd.h>
33 37
#include <sys/times.h>
34 38
#include <sys/time.h>
35 39
#endif
36 40

	
37 41
#include <string>
38 42
#include <fstream>
39 43
#include <iostream>
40 44

	
41 45
namespace lemon {
42 46

	
43 47
  /// \addtogroup timecount
44 48
  /// @{
45 49

	
46 50
  /// A class to store (cpu)time instances.
47 51

	
48 52
  /// This class stores five time values.
49 53
  /// - a real time
50 54
  /// - a user cpu time
51 55
  /// - a system cpu time
52 56
  /// - a user cpu time of children
53 57
  /// - a system cpu time of children
54 58
  ///
55 59
  /// TimeStamp's can be added to or substracted from each other and
56 60
  /// they can be pushed to a stream.
57 61
  ///
58 62
  /// In most cases, perhaps the \ref Timer or the \ref TimeReport
59 63
  /// class is what you want to use instead.
60 64

	
61 65
  class TimeStamp
62 66
  {
63 67
    double utime;
64 68
    double stime;
65 69
    double cutime;
66 70
    double cstime;
67 71
    double rtime;
68 72

	
69 73
    void _reset() {
70 74
      utime = stime = cutime = cstime = rtime = 0;
71 75
    }
72 76

	
73 77
  public:
74 78

	
75 79
    ///Read the current time values of the process
76 80
    void stamp()
77 81
    {
78 82
#ifndef WIN32
79 83
      timeval tv;
80 84
      gettimeofday(&tv, 0);
81 85
      rtime=tv.tv_sec+double(tv.tv_usec)/1e6;
82 86

	
83 87
      tms ts;
84 88
      double tck=sysconf(_SC_CLK_TCK);
85 89
      times(&ts);
86 90
      utime=ts.tms_utime/tck;
87 91
      stime=ts.tms_stime/tck;
88 92
      cutime=ts.tms_cutime/tck;
89 93
      cstime=ts.tms_cstime/tck;
90 94
#else
91 95
      static const double ch = 4294967296.0e-7;
92 96
      static const double cl = 1.0e-7;
93 97

	
94 98
      FILETIME system;
95 99
      GetSystemTimeAsFileTime(&system);
96 100
      rtime = ch * system.dwHighDateTime + cl * system.dwLowDateTime;
97 101

	
98 102
      FILETIME create, exit, kernel, user;
99 103
      if (GetProcessTimes(GetCurrentProcess(),&create, &exit, &kernel, &user)) {
100 104
        utime = ch * user.dwHighDateTime + cl * user.dwLowDateTime;
101 105
        stime = ch * kernel.dwHighDateTime + cl * kernel.dwLowDateTime;
102 106
        cutime = 0;
103 107
        cstime = 0;
104 108
      } else {
105 109
        rtime = 0;
106 110
        utime = 0;
107 111
        stime = 0;
108 112
        cutime = 0;
109 113
        cstime = 0;
110 114
      }
111 115
#endif
112 116
    }
113 117

	
114 118
    /// Constructor initializing with zero
115 119
    TimeStamp()
116 120
    { _reset(); }
117 121
    ///Constructor initializing with the current time values of the process
118 122
    TimeStamp(void *) { stamp();}
119 123

	
120 124
    ///Set every time value to zero
121 125
    TimeStamp &reset() {_reset();return *this;}
122 126

	
123 127
    ///\e
124 128
    TimeStamp &operator+=(const TimeStamp &b)
0 comments (0 inline)