text: /*
  ** FamiTracker - NES/Famicom sound tracker
  ** Copyright (C) 2005-2014  Jonathan Liss
  **
  ** 0CC-FamiTracker is (C) 2014-2018 HertzDevil
  **
  ** This program is free software; you can redistribute it and/or modify
  ** it under the terms of the GNU General Public License as published by
  ** the Free Software Foundation; either version 2 of the License, or
  ** (at your option) any later version.
  **
  ** This program is distributed in the hope that it will be useful,
  ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  ** Library General Public License for more details.  To obtain a
  ** copy of the GNU Library General Public License, write to the Free
  ** Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  **
  ** Any permitted reproduction of these routines, in whole or in part,
  ** must bear this legend.
  */
  
  
  #pragma once
  
  #include <memory>
  
  class CSequence;
  class CGraphEditor;
  class CWnd;
  class CRect;
  
  struct CGraphEditorFactory {
  	std::unique_ptr<CGraphEditor> Make(CWnd *parent, CRect region, std::shared_ptr<CSequence> pSeq, int instType, int maxVol, int maxDuty) const;
  
  private:
  	std::unique_ptr<CGraphEditor> MakeBarEditor(CWnd *parent, CRect region, std::shared_ptr<CSequence> pSeq, int items) const;
  	std::unique_ptr<CGraphEditor> MakeCellEditor(CWnd *parent, CRect region, std::shared_ptr<CSequence> pSeq, int items) const;
  	std::unique_ptr<CGraphEditor> MakePitchEditor(CWnd *parent, CRect region, std::shared_ptr<CSequence> pSeq) const;
  	std::unique_ptr<CGraphEditor> MakeNoiseEditor(CWnd *parent, CRect region, std::shared_ptr<CSequence> pSeq, int items) const;
  };
  