⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 keysequence.h

📁 Nokia手机语音管理程序
💻 H
字号:
#ifndef KEYSEQUENCE_H
#define KEYSEQUENCE_H
#pragma once

#include "Note.h"

class Melody;

// +-------------------------------------------------------------
// |
// | Class           : Key
// | Descripci髇     : 
// | 
// +-------------------------------------------------------------
class Key
{
public:
  Key( char key = -1, bool dot = false) : key_(key), dot_(dot) {}
  operator char() { return key_; }

  bool HasDot() 
    { 
      Assert( IsTone() , "only tones can have dot");
      return dot_;
    }
  bool IsTone() 
    { 
      return key_ >= '0' && key_ <= '7'; 
    }
  Note::Tone GetTone() 
    { 
      Assert( IsTone(), "key is not a tone" );
      return (Note::Tone) (key_ - '1' + Note::ToneC) ; 
    }
private:
  char key_;
  bool dot_;
};

class KeySequence;

// +-------------------------------------------------------------
// |
// | Class           : KeySequenceIterator
// | Descripci髇     : 
// | 
// +-------------------------------------------------------------
class KeySequenceIterator
{
private:
  KeySequenceIterator(const KeySequence& keySequence);

  friend class KeySequence;

public:
  bool HasMoreElements();
  Key  GetNext();

private:
  const CString& keys_;
  int   position_;
};

// +-------------------------------------------------------------
// |
// | Class           : KeySequence
// | Descripci髇     : 
// | 
// +-------------------------------------------------------------
class KeySequence  
{
public:
	KeySequence(const char* keySequence = 0);
	virtual ~KeySequence();

  KeySequenceIterator GetKeySequence() const;

  void GenerateFromMelody( const Melody& melody );

  const CString& GetString() const;
  int GetKeyCount() const;

private:
  void AddKeyToSequence( Key key, bool parentheses = false);

  friend class KeySequenceIterator;
  CString keySequence_;
};

#endif //KEYSEQUENCE_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -