Isomet Modular Synthesiser (iMS) API  v1.4.2
iMS API
ImageProject.h
Go to the documentation of this file.
1 /*-----------------------------------------------------------------------------
2 / Title : Isomet Image Project Header
3 / Project : Isomet Modular Synthesiser System
4 /------------------------------------------------------------------------------
5 / File : $URL: http://nutmeg.qytek.lan/svn/sw/trunk/09-Isomet/iMS_SDK/API/ImageOps/h/ImageProject.h $
6 / Author : $Author: dave $
7 / Company : Isomet (UK) Ltd
8 / Created : 2015-04-09
9 / Last update: $Date: 2017-09-11 23:55:34 +0100 (Mon, 11 Sep 2017) $
10 / Platform :
11 / Standard : C++11
12 / Revision : $Rev: 300 $
13 /------------------------------------------------------------------------------
14 / Description: The ImageProject class organises Image's, ImageGroup's,
15 / CompensationFunction's and ToneBuffer's in a single entity. The application
16 / software may use any or all of the containers according to need. An efficient
17 / custom file format has been defined, both in compressed (.iip or IsometImageProject)
18 / and uncompressed (.xml) formats and ImageProject's may be saved to and loaded
19 / from disk in these formats. The class will also read in ImageProject's
20 / generated by Isomet's previous generation Image software, the iHHS ImageFileGenerator.
21 /------------------------------------------------------------------------------
22 / Copyright (c) 2015 Isomet (UK) Ltd. All Rights Reserved.
23 /------------------------------------------------------------------------------
24 / Revisions :
25 / Date Version Author Description
26 / 2015-04-09 1.0 dc Created
27 /
28 /----------------------------------------------------------------------------*/
29 
40 
41 #ifndef IMS_IMAGEPROJECT_H__
42 #define IMS_IMAGEPROJECT_H__
43 
44 #include "IMSTypeDefs.h"
45 #include "Containers.h"
46 #include "Image.h"
47 #include "Compensation.h"
48 #include "ToneBuffer.h"
49 
51 #if defined _WIN32 || defined __CYGWIN__
52  #ifdef __GNUC__
53  #define DLL_EXPORT __attribute__ ((dllexport))
54  #define DLL_IMPORT __attribute__ ((dllimport))
55  #else
56  #define DLL_EXPORT __declspec(dllexport) // Note: actually gcc seems to also supports this syntax.
57  #define DLL_IMPORT __declspec(dllimport) // Note: actually gcc seems to also supports this syntax.
58  #endif
59  #define DLL_LOCAL
60 #else
61  #if __GNUC__ >= 4
62  #define DLL_EXPORT __attribute__ ((visibility ("default")))
63  #define DLL_IMPORT __attribute__ ((visibility ("default")))
64  #define DLL_LOCAL __attribute__ ((visibility ("hidden")))
65  #else
66  #define DLL_EXPORT
67  #define DLL_IMPORT
68  #define DLL_LOCAL
69  #endif
70 #endif
71 
72 #if defined(_EXPORTING_IMS)
73  #define LIBSPEC DLL_EXPORT
74  #define LIBLOCAL DLL_LOCAL
75  #define EXPIMP_TEMPLATE
76 #elif defined(_STATIC_IMS)
77  #define LIBSPEC
78  #define LIBLOCAL
79  #define EXPIMP_TEMPLATE
80 #else
81  #define LIBSPEC DLL_IMPORT
82  #define LIBLOCAL DLL_LOCAL
83  #define EXPIMP_TEMPLATE extern
84 #endif
85 
87 namespace iMS {
88 
96  class LIBSPEC ImageGroupList : public ListBase < ImageGroup >
97  {};
98 
106  class LIBSPEC CompensationFunctionList : public ListBase < CompensationFunction >
107  {};
108 
116  class LIBSPEC ToneBufferList : public ListBase < ToneBuffer >
117  {};
118 
136  class LIBSPEC ImageProject
137  {
138  public:
140 
141  ImageProject();
149  ImageProject(const std::string& fileName);
151 
152 
153 
155 
156  ImageGroupList& ImageGroupContainer();
161  const ImageGroupList& ImageGroupContainer() const;
163 
164 
166 
167  CompensationFunctionList& CompensationFunctionContainer();
172  const CompensationFunctionList& CompensationFunctionContainer() const;
174 
175 
177 
178  ToneBufferList& ToneBufferContainer();
183  const ToneBufferList& ToneBufferContainer() const;
185 
186 
188 
189  ImageGroup& FreeImageContainer();
198  const ImageGroup& FreeImageContainer() const;
200 
201 
203 
204  bool Save(const std::string& fileName);
226  bool Load(const std::string& fileName);
228 
229 
233  void Clear();
234  private:
235  class Impl;
236  Impl *p_Impl;
237  };
238 }
239 
240 #undef EXPIMP_TEMPLATE
241 #undef LIBSPEC
242 #endif
A List of CompensationFunction's used as a container by ImageProject.
Definition: ImageProject.h:106
An ImageProject allows the user to organise their data and store it on the host computer.
Definition: ImageProject.h:136
Template Class encapsulating a list object and acting as a base list class for other classes in the l...
Definition: Containers.h:91
An ImageGroup collects together multiple associated images and a single ImageSequence for controlling...
Definition: Image.h:910
A List of ImageGroup's used as a container by ImageProject.
Definition: ImageProject.h:96
The entire API is encapsulated by the iMS namespace.
Definition: Auxiliary.h:95
Classes for storing sequences of synchronous multi-channel RF drive data.
A List of ToneBuffer's used as a container by ImageProject.
Definition: ImageProject.h:116
Container Classes for storing various types of data related to Image classes and others.
Class for storing an array of Synthesiser tones.
Useful Type Definitions for working with iMS Systems.
Classes for creating and downloading data that is used in the Compensation tables of the Synthesiser...