]> git.jsancho.org Git - lugaru.git/blob - Source/WinDefs.cpp
First step at cleaning image loading.
[lugaru.git] / Source / WinDefs.cpp
1 /*
2 Copyright (C) 2003, 2010 - Wolfire Games
3
4 This file is part of Lugaru.
5
6 Lugaru is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 Lugaru is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with Lugaru.  If not, see <http://www.gnu.org/licenses/>.
18 */
19
20 /**> HEADER FILES <**/
21 #include "WinDefs.h"
22 #include <windows.h>
23 #include <errno.h>
24 #include <time.h>
25 #include <stdio.h>
26
27
28 class AppTime
29 {
30 public:
31     AppTime() {
32         counterRate = 1;
33         baseCounter = 0;
34         QueryPerformanceFrequency( (LARGE_INTEGER*)&counterRate);
35         QueryPerformanceCounter( (LARGE_INTEGER*)&baseCounter);
36     }
37     __int64 counterRate; // LARGE_INTEGER type has no math functions so use int64
38     __int64 baseCounter;
39 };
40 static AppTime g_appTime;
41
42 AbsoluteTime UpTime()
43 {
44     __int64 counter;
45     QueryPerformanceCounter( (LARGE_INTEGER*)&counter);
46
47     counter -= g_appTime.baseCounter;
48
49     AbsoluteTime time;
50     time.lo = (unsigned long)counter;
51     time.hi = (unsigned long)(counter >> 32);
52     return time;
53 }
54
55
56 Duration AbsoluteDeltaToDuration( AbsoluteTime& a, AbsoluteTime& b)
57 {
58     __int64 value = a.hi;
59     value <<= 32;
60     value |= a.lo;
61     __int64 value2 = b.hi;
62     value2 <<= 32;
63     value2 |= b.lo;
64     value -= value2;
65
66     if (value <= 0)
67         return durationImmediate;
68
69     __int64 frac = value % g_appTime.counterRate;
70     value /= g_appTime.counterRate;
71
72     Duration time;
73
74     if (value == 0) {
75         frac *= -1000000;
76         frac /= g_appTime.counterRate;
77         time = (Duration)frac;
78     } else {
79         frac *= 1000;
80         frac /= g_appTime.counterRate;
81         value *= 1000;
82         value += frac;
83         time = (Duration)value;
84     }
85
86     return time;
87 }
88
89
90 static char g_filename[ 256];
91 char* ConvertFileName( const char* orgfilename)
92 {
93     // translate filename into proper path name
94     if (orgfilename[ 0] == ':')
95         orgfilename++;
96     strcpy( g_filename, orgfilename);
97
98     for (int n = 0; g_filename[ n]; n++) {
99         if (g_filename[ n] == ':')
100             g_filename[ n] = '/';
101     }
102
103     return g_filename;
104 }
105
106 char* ConvertFileName( const char* orgfilename, const char* junk)
107 {
108     return ConvertFileName(orgfilename);
109 }