Merge branch 'blender2.7'
[blender.git] / intern / ghost / intern / GHOST_SystemPathsWin32.h
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
19  * All rights reserved.
20  *
21  * The Original Code is: all of this file.
22  *
23  * Contributor(s): none yet.
24  *
25  * ***** END GPL LICENSE BLOCK *****
26  */
27
28 /** \file ghost/intern/GHOST_SystemPathsWin32.h
29  *  \ingroup GHOST
30  */
31
32
33 #ifndef __GHOST_SYSTEMPATHSWIN32_H__
34 #define __GHOST_SYSTEMPATHSWIN32_H__
35
36 #ifndef WIN32
37 #error WIN32 only!
38 #endif // WIN32
39
40 #undef _WIN32_WINNT
41 #define _WIN32_WINNT 0x501 // require Windows XP or newer
42 #define WIN32_LEAN_AND_MEAN
43 #include <windows.h>
44
45 #include "GHOST_SystemPaths.h"
46
47
48 /**
49  * WIN32 Implementation of GHOST_SystemPaths class.
50  * \see GHOST_SystemPaths.
51  * \author      Andrea Weikert
52  * \date        August 1, 2010
53  */
54 class GHOST_SystemPathsWin32 : public GHOST_SystemPaths {
55 public:
56         /**
57          * Constructor.
58          */
59         GHOST_SystemPathsWin32();
60
61         /**
62          * Destructor.
63          */
64         ~GHOST_SystemPathsWin32();
65
66         /**
67          * Determine the base dir in which shared resources are located. It will first try to use
68          * "unpack and run" path, then look for properly installed path, including versioning.
69          * \return Unsigned char string pointing to system dir (eg /usr/share/).
70          */
71         const GHOST_TUns8 *getSystemDir(int version, const char *versionstr) const;
72
73         /**
74          * Determine the base dir in which user configuration is stored, including versioning.
75          * If needed, it will create the base directory.
76          * \return Unsigned char string pointing to user dir (eg ~/).
77          */
78         const GHOST_TUns8 *getUserDir(int version, const char *versionstr) const;
79
80         /**
81          * Determine the directory of the current binary
82          * \return Unsigned char string pointing to the binary dir
83          */
84         const GHOST_TUns8 *getBinaryDir() const;
85
86         /**
87          * Add the file to the operating system most recently used files
88          */
89         void addToSystemRecentFiles(const char *filename) const;
90 };
91
92 #endif // __GHOST_SYSTEMPATHSWIN32_H__