// This file is part of VSTGUI. It is subject to the license terms // in the LICENSE file found in the top-level directory of this // distribution and at http://github.com/steinbergmedia/vstgui/LICENSE #ifndef __cfontchooser__ #define __cfontchooser__ #include "../vstguifwd.h" #include "../cviewcontainer.h" #include "../cfont.h" #include "../cdatabrowser.h" #include "../genericstringlistdatabrowsersource.h" #include "icontrollistener.h" namespace VSTGUI { /// @ingroup new_in_4_0 //----------------------------------------------------------------------------- class IFontChooserDelegate { public: virtual void fontChanged (CFontChooser* chooser, CFontRef newFont) = 0; }; /// @ingroup new_in_4_0 //----------------------------------------------------------------------------- struct CFontChooserUIDefinition { CFontRef font; int32_t rowHeight; CColor fontColor; CColor selectionColor; CColor rowlineColor; CColor rowBackColor; CColor rowAlternateBackColor; CColor previewTextColor; CColor previewBackgroundColor; CColor scrollbarScrollerColor; CColor scrollbarFrameColor; CColor scrollbarBackgroundColor; CCoord scrollbarWidth; CFontChooserUIDefinition (CFontRef font = kSystemFont, const CColor& fontColor = kWhiteCColor, const CColor& selectionColor = kBlueCColor, const CColor& rowlineColor = kGreyCColor, const CColor& rowBackColor = kTransparentCColor, const CColor& rowAlternateBackColor = kTransparentCColor, const CColor& previewTextColor = kBlackCColor, const CColor& previewBackgroundColor = kWhiteCColor, const CColor& scrollbarScrollerColor = kBlueCColor, const CColor& scrollbarFrameColor = kBlackCColor, const CColor& scrollbarBackgroundColor = kGreyCColor, int32_t rowHeight = -1, CCoord scrollbarWidth = 16) : font (font), rowHeight (rowHeight), fontColor (fontColor), selectionColor (selectionColor), rowlineColor (rowlineColor) , rowBackColor (rowBackColor), rowAlternateBackColor (rowAlternateBackColor), previewTextColor (previewTextColor), previewBackgroundColor (previewBackgroundColor) , scrollbarScrollerColor (scrollbarScrollerColor), scrollbarFrameColor (scrollbarFrameColor) , scrollbarBackgroundColor (scrollbarBackgroundColor), scrollbarWidth (scrollbarWidth) {} }; /// @ingroup new_in_4_0 //----------------------------------------------------------------------------- class CFontChooser : public CViewContainer, public IControlListener, public GenericStringListDataBrowserSourceSelectionChanged { public: CFontChooser (IFontChooserDelegate* delegate, CFontRef initialFont = nullptr, const CFontChooserUIDefinition& uiDef = CFontChooserUIDefinition ()); ~CFontChooser () noexcept override; void setFont (CFontRef font); protected: void dbSelectionChanged (int32_t selectedRow, GenericStringListDataBrowserSource* source) override; void valueChanged (CControl* pControl) override; bool attached (CView* parent) override; int32_t onKeyDown (VstKeyCode& keyCode) override; IFontChooserDelegate* delegate; CDataBrowser* fontBrowser; CTextEdit* sizeEdit; CCheckBox* boldBox; CCheckBox* italicBox; CCheckBox* underlineBox; CCheckBox* strikeoutBox; CView* fontPreviewView; GenericStringListDataBrowserSource::StringVector fontNames; CFontRef selFont; }; } // namespace #endif