// 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 #pragma once #include "vstguibase.h" #include #include #include #include #include namespace VSTGUI { //----------------------------------------------------------------------------- using CViewAttributeID = size_t; using ModalViewSessionID = uint32_t; //----------------------------------------------------------------------------- static constexpr uint32_t kStreamIOError = (std::numeric_limits::max) (); static constexpr int64_t kStreamSeekError = -1; // enums //---------------------------- // @brief Mouse Wheel Axis //---------------------------- enum CMouseWheelAxis { kMouseWheelAxisX = 0, kMouseWheelAxisY }; //---------------------------- // @brief Mouse Event Results //---------------------------- enum CMouseEventResult { kMouseEventNotImplemented = 0, kMouseEventHandled, kMouseEventNotHandled, kMouseDownEventHandledButDontNeedMovedOrUpEvents, kMouseMoveEventHandledButDontNeedMoreEvents }; //---------------------------- // @brief Cursor Type //---------------------------- enum CCursorType { /** arrow cursor */ kCursorDefault = 0, /** wait cursor */ kCursorWait, /** horizontal size cursor */ kCursorHSize, /** vertical size cursor */ kCursorVSize, /** size all cursor */ kCursorSizeAll, /** northeast and southwest size cursor */ kCursorNESWSize, /** northwest and southeast size cursor */ kCursorNWSESize, /** copy cursor (mainly for drag&drop operations) */ kCursorCopy, /** not allowed cursor (mainly for drag&drop operations) */ kCursorNotAllowed, /** pointing hand cursor */ kCursorPointingHand, /** i beam cursor */ kCursorIBeam, /** crosshair cursor */ kCursorCrosshair, /** moveable object cursor */ kCursorMovableObject, /** move object cursor */ kCursorMoveObject, /** old name */ kCursorHand = kCursorPointingHand, }; //---------------------------- // @brief View Autosizing //---------------------------- enum CViewAutosizing { kAutosizeNone = 0, kAutosizeLeft = 1 << 0, kAutosizeTop = 1 << 1, kAutosizeRight = 1 << 2, kAutosizeBottom = 1 << 3, kAutosizeColumn = 1 << 4, kAutosizeRow = 1 << 5, kAutosizeAll = kAutosizeLeft | kAutosizeTop | kAutosizeRight | kAutosizeBottom }; enum DragResult { kDragRefused = 0, kDragMoved, kDragCopied, kDragError = -1 }; //----------- // @brief Text Face //----------- enum CTxtFace { kNormalFace = 0, kBoldFace = 1 << 1, kItalicFace = 1 << 2, kUnderlineFace = 1 << 3, kStrikethroughFace = 1 << 4 }; //---------------------------- // @brief Bitmap Interpolation //---------------------------- enum class BitmapInterpolationQuality { kDefault = 0, ///< Let system decide kLow, ///< Nearest neighbour kMedium, ///< Bilinear interpolation kHigh ///< Bicubic interpolation (Bilinear on Windows) }; //----------------------------------------------------------------------------- enum class CSliderMode { Touch, RelativeTouch, FreeClick, Ramp, UseGlobal }; enum class DragOperation; // @brief Stream seek modes enum class SeekMode { Set, Current, End }; // simple structs struct CColor; struct CPoint; struct CRect; struct CButtonState; struct CDrawMode; struct CGraphicsTransform; struct DragDescription; struct DragEventData; struct ModalViewSession; struct CListControlRowDesc; struct CNinePartTiledDescription; struct CMultiFrameBitmapDescription; using GradientColorStop = std::pair; using GradientColorStopMap = std::multimap; using LinePair = std::pair; using LineList = std::vector; using PointList = std::vector; // interfaces class IViewListener; class IViewEventListener; class IViewContainerListener; class IViewMouseListener; class IDataPackage; class IDependency; class IFocusDrawing; class IScaleFactorChangedListener; class IDataBrowserDelegate; class IMouseObserver; class IKeyboardHook; class IViewAddedRemovedObserver; class IFocusViewObserver; class ISplitViewController; class ISplitViewSeparatorDrawer; class IScrollbarDrawer; class IControlListener; class IDragCallback; class IDraggingSession; class IDropTarget; class ICommandMenuItemTarget; class IOptionMenuListener; class ITextEditListener; class ITextLabelListener; class IListControlDrawer; class IListControlConfigurator; class IViewLayouter; struct ViewLayout; #if VSTGUI_TOUCH_EVENT_HANDLING class ITouchEvent; #endif // classes class CBitmap; class CMultiFrameBitmap; class CNinePartTiledBitmap; class CResourceDescription; class CLineStyle; class CDrawContext; class COffscreenContext; class CDropSource; class CFileExtension; class CNewFileSelector; class CFontDesc; class VSTGUIEditorInterface; class CTooltipSupport; class CGraphicsPath; class CGradient; class UTF8String; class UTF8StringView; class CVSTGUITimer; class CMenuItem; class CCommandMenuItem; class GenericStringListDataBrowserSource; class StaticListControlConfigurator; class StringListControlDrawer; using CFontRef = CFontDesc*; // views class CFrame; class CDataBrowser; class CGradientView; class CLayeredViewContainer; class CAutoLayoutContainerView; class CRowColumnView; class CScrollView; class CShadowViewContainer; class CSplitView; class CTabView; class CView; class CViewContainer; #if VSTGUI_OPENGL_SUPPORT class COpenGLView; #endif // controls class CAutoAnimation; class COnOffButton; class CCheckBox; class CKickButton; class CTextButton; class CColorChooser; class CControl; class CFontChooser; class CKnob; class CAnimKnob; class CMovieBitmap; class CMovieButton; class COptionMenu; class CParamDisplay; class CScrollbar; class CSegmentButton; class CSlider; class CVerticalSlider; class CHorizontalSlider; class CSpecialDigit; class CSplashScreen; class CAnimationSplashScreen; class CVerticalSwitch; class CHorizontalSwitch; class CRockerSwitch; class CTextEdit; class CSearchTextEdit; class CTextLabel; class CMultiLineTextLabel; class CVuMeter; class CXYPad; class CListControl; // events struct Event; struct ModifierEvent; struct MousePositionEvent; struct MouseEvent; struct MouseDownUpMoveEvent; struct MouseDownEvent; struct MouseMoveEvent; struct MouseUpEvent; struct MouseCancelEvent; struct MouseEnterEvent; struct MouseExitEvent; struct GestureEvent; struct MouseWheelEvent; struct ZoomGestureEvent; struct KeyboardEvent; struct Modifiers; enum class EventType : uint32_t; enum class VirtualKey : uint32_t; enum class ModifierKey : uint32_t; const Event& noEvent (); // animation namespace Animation { class IAnimationTarget; class ITimingFunction; class AlphaValueAnimation; class ViewSizeAnimation; class ExchangeViewAnimation; class ControlValueAnimation; class Animator; class TimingFunctionBase; class LinearTimingFunction; class PowerTimingFunction; class InterpolationTimingFunction; class RepeatTimingFunction; using DoneFunction = std::function; } // Animation template class SharedPointer; // platform class IPlatformTextEdit; class IPlatformTextEditCallback; class IPlatformOptionMenu; class IPlatformOpenGLView; class IPlatformViewLayer; class IPlatformViewLayerDelegate; class IPlatformString; class IPlatformBitmap; class IPlatformBitmapPixelAccess; class IPlatformFont; class IPlatformFrame; class IFontPainter; class IPlatformResourceInputStream; class IPlatformFactory; class IPlatformFrame; class IPlatformBitmap; class IPlatformFont; class IPlatformGradient; class IPlatformGraphicsPath; class IPlatformGraphicsPathFactory; class IPlatformString; class IPlatformTimer; class IPlatformResourceInputStream; class IPlatformFrameConfig; class IPlatformFrameCallback; class IPlatformTimerCallback; class IPlatformFileSelector; class IPlatformGraphicsDeviceFactory; class IPlatformGraphicsDevice; class IPlatformGraphicsDeviceContext; class IPlatformGraphicsDeviceContextBitmapExt; class IPlatformTaskExecutor; struct PlatformFileExtension; struct PlatformFileSelectorConfig; enum class PlatformType : int32_t; enum class PlatformGraphicsPathFillMode : int32_t; enum class PlatformFileSelectorStyle : uint32_t; enum class PlatformFileSelectorFlags : uint32_t; using PlatformFramePtr = SharedPointer; using PlatformBitmapPtr = SharedPointer; using PlatformFontPtr = SharedPointer; using PlatformStringPtr = SharedPointer; using PlatformTimerPtr = SharedPointer; using PlatformResourceInputStreamPtr = std::unique_ptr; using PlatformFactoryPtr = std::unique_ptr; using PlatformGradientPtr = std::unique_ptr; using PlatformGraphicsPathPtr = std::unique_ptr; using PlatformGraphicsPathFactoryPtr = std::shared_ptr; using PlatformFileSelectorPtr = std::shared_ptr; using PlatformGraphicsDevicePtr = std::shared_ptr; using PlatformGraphicsDeviceContextPtr = std::shared_ptr; using PlatformTaskExecutorPtr = std::unique_ptr; } // VSTGUI