File indexing completed on 2024-04-28 05:26:22

0001 /*
0002  * SPDX-FileCopyrightText: 2014 Hugo Pereira Da Costa <hugo.pereira@free.fr>
0003  * SPDX-FileCopyrightText: 2020 Noah Davis <noahadvs@gmail.com>
0004  *
0005  * SPDX-License-Identifier: GPL-2.0-or-later
0006  */
0007 
0008 #pragma once
0009 
0010 #include <QtGlobal>
0011 
0012 namespace Breeze
0013 {
0014 //* standard pen widths
0015 struct PenWidth {
0016     /* Using 1 instead of slightly more than 1 causes symbols drawn with
0017      * pen strokes to look skewed. The exact amount added does not matter
0018      * as long as it isn't too visible. Even with QPen::setCosmetic(true),
0019      * 1px pen widths still look slightly worse.
0020      */
0021     // The standard pen stroke width for symbols.
0022     static constexpr qreal Symbol = 1.001;
0023 
0024     // The standard pen stroke width for frames.
0025     static constexpr qreal Frame = 1.001;
0026 
0027     // The standard pen stroke width for shadows.
0028     static constexpr qreal Shadow = 1.001;
0029 
0030     // A value for pen width arguments to make it clear that there is no pen stroke
0031     static constexpr int NoPen = 0;
0032 };
0033 
0034 //* metrics
0035 struct Metrics {
0036     // general
0037     static constexpr int ArrowSize = 10;
0038     static constexpr int SmallArrowSize = 5;
0039 
0040     // frames
0041     static constexpr int Frame_FrameWidth = 2;
0042     static constexpr int Frame_FrameRadius = 3;
0043 
0044     // layout
0045     static constexpr int Layout_TopLevelMarginWidth = 10;
0046     static constexpr int Layout_ChildMarginWidth = 6;
0047     static constexpr int Layout_DefaultSpacing = 6;
0048 
0049     // line editors
0050     static constexpr int LineEdit_FrameWidth = 6;
0051 
0052     // menu items
0053     static constexpr int Menu_FrameWidth = 0;
0054     static constexpr int MenuItem_MarginWidth = 5;
0055     static constexpr int MenuItem_HighlightGap = 4;
0056     static constexpr int MenuItem_ExtraLeftMargin = 4;
0057     static constexpr int MenuItem_MarginHeight = 3;
0058     static constexpr int MenuItem_ItemSpacing = 4;
0059     static constexpr int MenuItem_AcceleratorSpace = 16;
0060 
0061     // combobox
0062     static constexpr int ComboBox_FrameWidth = 6;
0063 
0064     // spinbox
0065     static constexpr int SpinBox_FrameWidth = LineEdit_FrameWidth;
0066     static constexpr int SpinBox_ArrowButtonWidth = 20;
0067 
0068     // groupbox title margin
0069     static constexpr int GroupBox_TitleMarginWidth = 4;
0070 
0071     // buttons
0072     static constexpr int Button_MinWidth = 80;
0073     static constexpr int Button_MarginWidth = 6;
0074     static constexpr int Button_ItemSpacing = 4;
0075 
0076     // tool buttons
0077     static constexpr int ToolButton_MarginWidth = 6;
0078     static constexpr int ToolButton_ItemSpacing = 4;
0079     static constexpr int ToolButton_InlineIndicatorWidth = 12;
0080 
0081     // menu button indicator
0082     static constexpr int MenuButton_IndicatorWidth = 20;
0083 
0084     // checkboxes and radio buttons
0085     static constexpr int CheckBox_Size = 20;
0086     static constexpr int CheckBox_FocusMarginWidth = 2;
0087     static constexpr int CheckBox_ItemSpacing = 4;
0088     static constexpr int CheckBox_Radius = Frame_FrameRadius - 1;
0089 
0090     // menubar items
0091     static constexpr int MenuBarItem_MarginWidth = 10;
0092     static constexpr int MenuBarItem_MarginHeight = 6;
0093 
0094     // scrollbars
0095     static constexpr int ScrollBar_Extend = 21;
0096     static constexpr int ScrollBar_SliderWidth = 8;
0097     static constexpr int ScrollBar_MinSliderHeight = 20;
0098     static constexpr int ScrollBar_NoButtonHeight = 3;
0099     static constexpr int ScrollBar_SingleButtonHeight = ScrollBar_Extend;
0100     static constexpr int ScrollBar_DoubleButtonHeight = 2 * ScrollBar_Extend;
0101 
0102     // toolbars
0103     static constexpr int ToolBar_FrameWidth = 0;
0104     static constexpr int ToolBar_HandleExtent = 10;
0105     static constexpr int ToolBar_HandleWidth = 6;
0106     static constexpr int ToolBar_SeparatorWidth = 8;
0107     static constexpr int ToolBar_ExtensionWidth = 20;
0108     static constexpr int ToolBar_ItemMargin = 6;
0109     static constexpr int ToolBar_ItemSpacing = 0;
0110 
0111     // progressbars
0112     static constexpr int ProgressBar_BusyIndicatorSize = 14;
0113     static constexpr int ProgressBar_Thickness = 6;
0114     static constexpr int ProgressBar_ItemSpacing = 4;
0115 
0116     // mdi title bar
0117     static constexpr int TitleBar_MarginWidth = 4;
0118 
0119     // sliders
0120     static constexpr int Slider_TickLength = 8;
0121     static constexpr int Slider_TickMarginWidth = 2;
0122     static constexpr int Slider_GrooveThickness = 6;
0123     static constexpr int Slider_ControlThickness = 20;
0124 
0125     // tabbar
0126     static constexpr int TabBar_TabMarginHeight = 4;
0127     static constexpr int TabBar_TabMarginWidth = 8;
0128     static constexpr int TabBar_TabMinWidth = 80;
0129     static constexpr int TabBar_TabMinHeight = 30;
0130     static constexpr int TabBar_TabItemSpacing = 8;
0131     static constexpr int TabBar_TabOverlap = 1;
0132     static constexpr int TabBar_BaseOverlap = 2;
0133 
0134     // tab widget
0135     static constexpr int TabWidget_MarginWidth = 3;
0136 
0137     // toolbox
0138     static constexpr int ToolBox_TabMinWidth = 80;
0139     static constexpr int ToolBox_TabItemSpacing = 4;
0140     static constexpr int ToolBox_TabMarginWidth = 8;
0141 
0142     // tooltips
0143     static constexpr int ToolTip_FrameWidth = 3;
0144 
0145     // list headers
0146     static constexpr int Header_MarginWidth = 6;
0147     static constexpr int Header_ItemSpacing = 4;
0148     static constexpr int Header_ArrowSize = ArrowSize;
0149 
0150     // tree view
0151     static constexpr int ItemView_ArrowSize = ArrowSize;
0152     static constexpr int ItemView_ItemMarginWidth = 3;
0153     static constexpr int SidePanel_ItemMarginWidth = 4;
0154 
0155     // splitter
0156     static constexpr int Splitter_SplitterWidth = 1;
0157 
0158     // shadow dimensions
0159     static constexpr int Shadow_Overlap = 2;
0160 
0161     // frame intensities (called bias in KColorUtilities::Mix)
0162     // Keep this value in sync with Kirigami  PlatformTheme::frameContrast()
0163     // https://invent.kde.org/frameworks/kirigami/-/blob/master/src/platform/platformtheme.cpp?ref_type=heads#L701
0164     static constexpr qreal Bias_Default = 0.20;
0165 };
0166 }