c9d413c5dfb5bd68be579a33145955fc24972bde
[scilab.git] / scilab / modules / graphic_objects / includes / ScilabView.hxx
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2011-2011 - DIGITEO - Bruno JOFRET
4  *
5  *  This file must be used under the terms of the CeCILL.
6  *  This source file is licensed as described in the file COPYING, which
7  *  you should have received as part of this distribution.  The terms
8  *  are also available at
9  *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  *
11  */
12
13 #ifndef __SCILAB_VIEW_HXX__
14 #define __SCILAB_VIEW_HXX__
15
16 #include <map>
17 #include <string.h>
18
19 extern "C"
20 {
21     void ScilabNativeView__createObject(char* pstId);
22     void ScilabNativeView__deleteObject(char* pstId);
23     void ScilabNativeView__updateObject(char* pstId, char* pstProperty);
24 }
25
26 class ScilabView
27 {
28 private :
29     ScilabView() {}
30     ~ScilabView() {}
31     struct cmp_str
32     {
33         bool operator()(char const *a, char const *b)
34         {
35             return strcmp(a, b) < 0;
36         }
37     };
38
39     // Define type for easy manipulation.
40     typedef std::map<char*, long, cmp_str>  __handleList;
41     typedef __handleList::iterator          __handleList_iterator;
42     typedef std::map<char*, int, cmp_str>    __figureList;
43     typedef __figureList::iterator          __figureList_iterator;
44
45     static __figureList                     m_figureList;
46     static __handleList                     m_handleList;
47     static long                             m_topHandleValue;
48     static char*                            m_currentFigure;
49     static char*                            m_currentObject;
50     static char*                            m_currentSubWin;
51     static char*                            m_figureModel;
52     static char*                            m_axesModel;
53
54 public :
55     static void   createObject(char* pstId);
56     static void   deleteObject(char* pstId);
57     static void   updateObject(char* pstId, char* pstProperty);
58
59     static int    getNbFigure(void);
60     static void   getFiguresId(int ids[]);
61     static void   registerToController(void);
62     static void   unregisterToController(void);
63     static bool   existsFigureId(int id);
64     static char*  getFigureFromIndex(int figureNumber);
65     static bool   isEmptyFigureList(void);
66
67     static char*  getCurrentFigure(void);
68     static void   setCurrentFigure(char *UID);
69
70     static char*  getCurrentObject(void);
71     static void   setCurrentObject(char *UID);
72
73     static char*  getCurrentSubWin(void);
74     static void   setCurrentSubWin(char *UID);
75
76     static long   getObjectHandle(char *UID);
77     static char*  getObjectFromHandle(long handle);
78
79     static char*  getFigureModel(void);
80     static void   setFigureModel(char *UID);
81
82     static char*  getAxesModel(void);
83     static void   setAxesModel(char *UID);
84
85 };
86
87 #endif /* !__SCILAB_VIEW_HXX__ */
88