ROOT logo
// $Id: Glass_SKEL.h 2089 2008-11-23 20:31:03Z matevz $

// Copyright (C) 1999-2008, Matevz Tadel. All rights reserved.
// This file is part of GLED, released under GNU General Public License version 2.
// For the licensing terms see $GLEDSYS/LICENSE or http://www.gnu.org/.

#ifndef Tmp1_ParametricSystem_H
#define Tmp1_ParametricSystem_H

#include <Glasses/ZNode.h>
#include <Glasses/ZVector.h>
#include <Stones/ZColor.h>

struct TwoParam
{
  TwoParam(char type, float p1, float p2):mType(type), mParam1(p1), mParam2(p2) {}
  TwoParam(char type) : mType(type), mParam1(-1), mParam2(-1) {}

  TwoParam() {printf("empty !!!!!\n ");}
  virtual ~TwoParam(){}
  
  void Set(char t, float p1, float p2) { mType = t; mParam1 = p1; mParam2 = p2; }
  
  char   mType;
  float  mParam1;
  float  mParam2;  
};

//===============================================================================

class ParametricSystem : public ZNode
{
  MAC_RNR_FRIENDS(ParametricSystem);
protected:
  typedef std::vector<TwoParam>     Segments_t;  
  typedef Segments_t::iterator      Segments_i;  
  
private:  
  
  void _init();
  
  void SetupNameMap();
  int  EvalExpressionSize();          
protected:
  
  typedef std::map<char, int>       NameMap_t;
  typedef NameMap_t::iterator       NameMap_i;  
  
  Int_t          mLevel;      // X{GST} 7 Value(-range=>[1, 11, 1])
  TString        mStart;      // X{GST} 7 Textor()  
  ZLink<ZVector> mRules;      // X{GS}  L {}
  ZColor	       mLineColor;  // X{GSPT} 7 ColorButt()

  
  NameMap_t      mNameMap;
  Segments_t     mExpression;
 
  double         mRndWeight;  // X{GST} 7 Value(-range=>[0, 1, 1, 1000])
  
  virtual void ExpandExpression(Segments_t& oldExp, Segments_t& newExp, int level);

  virtual void ExpandRule(const Text_t* rule, TwoParam& parent, Segments_t& s) {};
  virtual void InitialiseExpression() {};

  Segments_t GetExpression() const { return mExpression; }
  
  void Produce();

public:
  ParametricSystem(const Text_t* n="ParametricSystem", const Text_t* t=0);
  virtual ~ParametricSystem();
   
  void DumpInfo();    // X{ED}  7 MButt()
     
#include "ParametricSystem.h7"
  ClassDef(ParametricSystem, 1);
}; // endclass ParametricSystem

#endif
 ParametricSystem.h:1
 ParametricSystem.h:2
 ParametricSystem.h:3
 ParametricSystem.h:4
 ParametricSystem.h:5
 ParametricSystem.h:6
 ParametricSystem.h:7
 ParametricSystem.h:8
 ParametricSystem.h:9
 ParametricSystem.h:10
 ParametricSystem.h:11
 ParametricSystem.h:12
 ParametricSystem.h:13
 ParametricSystem.h:14
 ParametricSystem.h:15
 ParametricSystem.h:16
 ParametricSystem.h:17
 ParametricSystem.h:18
 ParametricSystem.h:19
 ParametricSystem.h:20
 ParametricSystem.h:21
 ParametricSystem.h:22
 ParametricSystem.h:23
 ParametricSystem.h:24
 ParametricSystem.h:25
 ParametricSystem.h:26
 ParametricSystem.h:27
 ParametricSystem.h:28
 ParametricSystem.h:29
 ParametricSystem.h:30
 ParametricSystem.h:31
 ParametricSystem.h:32
 ParametricSystem.h:33
 ParametricSystem.h:34
 ParametricSystem.h:35
 ParametricSystem.h:36
 ParametricSystem.h:37
 ParametricSystem.h:38
 ParametricSystem.h:39
 ParametricSystem.h:40
 ParametricSystem.h:41
 ParametricSystem.h:42
 ParametricSystem.h:43
 ParametricSystem.h:44
 ParametricSystem.h:45
 ParametricSystem.h:46
 ParametricSystem.h:47
 ParametricSystem.h:48
 ParametricSystem.h:49
 ParametricSystem.h:50
 ParametricSystem.h:51
 ParametricSystem.h:52
 ParametricSystem.h:53
 ParametricSystem.h:54
 ParametricSystem.h:55
 ParametricSystem.h:56
 ParametricSystem.h:57
 ParametricSystem.h:58
 ParametricSystem.h:59
 ParametricSystem.h:60
 ParametricSystem.h:61
 ParametricSystem.h:62
 ParametricSystem.h:63
 ParametricSystem.h:64
 ParametricSystem.h:65
 ParametricSystem.h:66
 ParametricSystem.h:67
 ParametricSystem.h:68
 ParametricSystem.h:69
 ParametricSystem.h:70
 ParametricSystem.h:71
 ParametricSystem.h:72
 ParametricSystem.h:73
 ParametricSystem.h:74
 ParametricSystem.h:75
 ParametricSystem.h:76
 ParametricSystem.h:77
 ParametricSystem.h:78
 ParametricSystem.h:79