0
2
0
... | ... |
@@ -8,50 +8,54 @@ |
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; |
... | ... |
@@ -667,60 +671,72 @@ |
667 | 671 |
///this function calls the algorithm itself, i.e. in this case |
668 | 672 |
///it draws the graph. |
669 | 673 |
void run() { |
670 | 674 |
const double EPSILON=1e-9; |
671 | 675 |
if(dontPrint) return; |
672 | 676 |
|
673 | 677 |
_graph_to_eps_bits::_NegY<typename T::CoordsMapType> |
674 | 678 |
mycoords(_coords,_negY); |
675 | 679 |
|
676 | 680 |
os << "%!PS-Adobe-2.0 EPSF-2.0\n"; |
677 | 681 |
if(_title.size()>0) os << "%%Title: " << _title << '\n'; |
678 | 682 |
if(_copyright.size()>0) os << "%%Copyright: " << _copyright << '\n'; |
679 | 683 |
os << "%%Creator: LEMON, graphToEps()\n"; |
680 | 684 |
|
681 | 685 |
{ |
682 | 686 |
#ifndef WIN32 |
683 | 687 |
timeval tv; |
684 | 688 |
gettimeofday(&tv, 0); |
685 | 689 |
|
686 | 690 |
char cbuf[26]; |
687 | 691 |
ctime_r(&tv.tv_sec,cbuf); |
688 | 692 |
os << "%%CreationDate: " << cbuf; |
689 | 693 |
#else |
690 | 694 |
SYSTEMTIME time; |
691 |
char buf1[11], buf2[9], buf3[5]; |
|
692 |
|
|
693 | 695 |
GetSystemTime(&time); |
696 |
#if defined(_MSC_VER) && (_MSC_VER < 1500) |
|
697 |
LPWSTR buf1, buf2, buf3; |
|
694 | 698 |
if (GetDateFormat(LOCALE_USER_DEFAULT, 0, &time, |
695 |
"ddd MMM dd", buf1, 11) && |
|
699 |
L"ddd MMM dd", buf1, 11) && |
|
696 | 700 |
GetTimeFormat(LOCALE_USER_DEFAULT, 0, &time, |
697 |
"HH':'mm':'ss", buf2, 9) && |
|
701 |
L"HH':'mm':'ss", buf2, 9) && |
|
698 | 702 |
GetDateFormat(LOCALE_USER_DEFAULT, 0, &time, |
699 |
|
|
703 |
L"yyyy", buf3, 5)) { |
|
700 | 704 |
os << "%%CreationDate: " << buf1 << ' ' |
701 | 705 |
<< buf2 << ' ' << buf3 << std::endl; |
702 | 706 |
} |
707 |
#else |
|
708 |
char buf1[11], buf2[9], buf3[5]; |
|
709 |
if (GetDateFormat(LOCALE_USER_DEFAULT, 0, &time, |
|
710 |
"ddd MMM dd", buf1, 11) && |
|
711 |
GetTimeFormat(LOCALE_USER_DEFAULT, 0, &time, |
|
712 |
"HH':'mm':'ss", buf2, 9) && |
|
713 |
GetDateFormat(LOCALE_USER_DEFAULT, 0, &time, |
|
714 |
"yyyy", buf3, 5)) { |
|
715 |
os << "%%CreationDate: " << buf1 << ' ' |
|
716 |
<< buf2 << ' ' << buf3 << std::endl; |
|
717 |
} |
|
718 |
#endif |
|
703 | 719 |
#endif |
704 | 720 |
} |
705 | 721 |
|
706 | 722 |
if (_autoArcWidthScale) { |
707 | 723 |
double max_w=0; |
708 | 724 |
for(ArcIt e(g);e!=INVALID;++e) |
709 | 725 |
max_w=std::max(double(_arcWidths[e]),max_w); |
710 | 726 |
if(max_w>EPSILON) { |
711 | 727 |
_arcWidthScale/=max_w; |
712 | 728 |
} |
713 | 729 |
} |
714 | 730 |
|
715 | 731 |
if (_autoNodeScale) { |
716 | 732 |
double max_s=0; |
717 | 733 |
for(NodeIt n(g);n!=INVALID;++n) |
718 | 734 |
max_s=std::max(double(_nodeSizes[n]),max_s); |
719 | 735 |
if(max_s>EPSILON) { |
720 | 736 |
_nodeScale/=max_s; |
721 | 737 |
} |
722 | 738 |
} |
723 | 739 |
|
724 | 740 |
double diag_len = 1; |
725 | 741 |
if(!(_absoluteNodeSizes&&_absoluteArcWidths)) { |
726 | 742 |
dim2::Box<double> bb; |
... | ... |
@@ -3,53 +3,58 @@ |
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 |
36 |
#include <unistd.h> |
|
32 | 37 |
#include <sys/times.h> |
33 | 38 |
#include <sys/time.h> |
34 | 39 |
#endif |
35 | 40 |
|
36 | 41 |
#include <string> |
37 | 42 |
#include <fstream> |
38 | 43 |
#include <iostream> |
39 | 44 |
|
40 | 45 |
namespace lemon { |
41 | 46 |
|
42 | 47 |
/// \addtogroup timecount |
43 | 48 |
/// @{ |
44 | 49 |
|
45 | 50 |
/// A class to store (cpu)time instances. |
46 | 51 |
|
47 | 52 |
/// This class stores five time values. |
48 | 53 |
/// - a real time |
49 | 54 |
/// - a user cpu time |
50 | 55 |
/// - a system cpu time |
51 | 56 |
/// - a user cpu time of children |
52 | 57 |
/// - a system cpu time of children |
53 | 58 |
/// |
54 | 59 |
/// TimeStamp's can be added to or substracted from each other and |
55 | 60 |
/// they can be pushed to a stream. |
0 comments (0 inline)