MFramesRange.h
1 /*****************************************************************************
2 **
3 ** Header file for Muster API Frames range object
4 **
5 ** Name : MFramesRange.h
6 ** Author : Leonardo Bernardini
7 ** Version : Alpha 9.0 Wed May 17th 2017
8 **
9 ** Copyright 2000-2017, Virtual Vertex
10 ** All Rights Reserved.
11 **
12 ** This file contains UNPUBLISHED PROPRIETARY SOURCE CODE.
13 ** The contents of this file may not be disclosed to third parties, copied
14 ** or duplicated in any form, in whole or in part, without the prior written
15 ** permission of the author.
16 **
17 *****************************************************************************/
18 #ifndef MFRAMESRANGE_H
19 #define MFRAMESRANGE_H
20 
21 #ifdef WIN32
22 
23 // Disable STL Export warning, member is private, we don't need direct access from the DLL client
24 #if defined(_WIN32)
25 #pragma warning(disable: 4251)
26 #endif // _WIN32
27 
28 // Windows definitions
29 #ifdef MCLIENTLIB_EXPORTS
30 #define MCLIENTLIB_API __declspec(dllexport)
31 #else
32 #define MCLIENTLIB_API __declspec(dllimport)
33 #endif
34 #else
35 
36 #ifndef MCLIENTLIB_EXPORTS
37 #ifdef LINUX
38 #define MCLIENTLIB_API
39 #else
40 #define MCLIENTLIB_API
41 #endif
42 #else
43 #define MCLIENTLIB_API
44 #endif
45 
46 #endif
47 
48 #include <string>
49 #include <set>
50 #include <list>
51 #include <map>
52 
53 namespace MClientLib {
54 
65  class MCLIENTLIB_API MFramesRange {
66  public:
67  MFramesRange();
68  MFramesRange(float _startFrame, float _endFrame, float _byFrame);
69  MFramesRange(float _startFrame, float _endFrame, float _byFrame, int _numberBy, int _stepBy);
70  static std::list<MFramesRange> FromString(const std::string& range);
71  static bool IsOverlapping(const std::string& range);
72  static std::map<std::string, std::string> TokenizeNumbers(const std::string& in);
73  static std::set<long> NumberedFrames(std::list<MFramesRange> ranges, long& averageByFrame);
74  static std::set<float> Frames(std::list<MFramesRange> ranges, long& averageByFrame);
75  std::string ToString();
76  std::set<float> Frames();
77  std::set<long> NumberedFrames();
78  std::list<MFramesRange> Packetize(int framesPerPacket);
79 
80  float GetStartFrame();
81  float GetEndFrame();
82  float GetByFrame();
83  int GetNumberBy();
84  int GetStepBy();
85 
86  void SetStartFrame(float);
87  void SetEndFrame(float);
88  void SetByFrame(float);
89  void SetNumberBy(int);
90  void SetStepBy(int);
91 
92  private:
93  float startFrame;
94  float endFrame;
95  float byFrame;
96  int numberBy;
97  int stepBy;
98  };
99 
101 }
102 
103 #endif
Class holding an API frames range object.
Definition: MFramesRange.h:65