#pragma once

#include "SprView.h"

// CSprWnd

#define SPRWNDSTYLE (WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME)
#define SPRWNDEXSTYLE (WS_EX_DLGMODALFRAME | WS_EX_COMPOSITED | WS_EX_NOPARENTNOTIFY | WS_EX_OVERLAPPEDWINDOW)

class CSprWnd : public CFrameWnd
{
		DECLARE_DYNAMIC(CSprWnd)

		std::unique_ptr<uint8_t[]> m_pFileBuffer; // сюда будет читаться файл, из него будет формироваться текстура, чтобы вывести её DibDrawом
		size_t          m_nFileLen{ 0 };
		int             m_cx{ 0 }, m_cy{ 0 }; // размеры viewportа
		int             m_orig_cx{ 512 }, m_orig_cy{ 256 };
		int             m_nScale{ 1 };
		int             m_cxScroll{ 0 };
		int             m_cyScroll{ 0 };
		int             m_cyToolbar{ 0 };
		BOOL            m_bSV{ FALSE }, m_bSH{ FALSE };
		CSprView       *m_pSprView{ nullptr };
		bool            m_bSprVwCreated{ false };

		CToolBar        m_wndToolBar;
		CComboBox       m_comboBoxPalette;
		CComboBox       m_comboBoxScale;
		CFont           m_ComboboxFont;

	public:
		CSprWnd(std::unique_ptr<uint8_t[]> buffer, const size_t size);
		virtual ~CSprWnd() override;

		inline const size_t GetFileLen() const
		{
			return m_nFileLen;
		}

	protected:
		void            SetButtonState();

		afx_msg void OnViewColormode();
		afx_msg void OnViewBWMode();
		afx_msg void OnSetPalette();
		afx_msg void OnSetScale();
		afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
		afx_msg void OnSize(UINT nType, int cx, int cy);
		afx_msg void OnGetMinMaxInfo(MINMAXINFO *lpMMI);
		DECLARE_MESSAGE_MAP()
};

