| 1 | /* |
| 2 | src/theme.cpp -- Storage class for basic theme-related properties |
| 3 | |
| 4 | The text box widget was contributed by Christian Schueller. |
| 5 | |
| 6 | NanoGUI was developed by Wenzel Jakob <wenzel.jakob@epfl.ch>. |
| 7 | The widget drawing code is based on the NanoVG demo application |
| 8 | by Mikko Mononen. |
| 9 | |
| 10 | All rights reserved. Use of this source code is governed by a |
| 11 | BSD-style license that can be found in the LICENSE.txt file. |
| 12 | */ |
| 13 | |
| 14 | #include <nanogui/theme.h> |
| 15 | #include <nanogui/opengl.h> |
| 16 | #include <nanogui/entypo.h> |
| 17 | #include <nanogui_resources.h> |
| 18 | |
| 19 | NAMESPACE_BEGIN(nanogui) |
| 20 | |
| 21 | Theme::Theme(NVGcontext *ctx) { |
| 22 | mStandardFontSize = 16; |
| 23 | mButtonFontSize = 20; |
| 24 | mTextBoxFontSize = 20; |
| 25 | mIconScale = 0.77f; |
| 26 | |
| 27 | mWindowCornerRadius = 2; |
| 28 | mWindowHeaderHeight = 30; |
| 29 | mWindowDropShadowSize = 10; |
| 30 | mButtonCornerRadius = 2; |
| 31 | mTabBorderWidth = 0.75f; |
| 32 | mTabInnerMargin = 5; |
| 33 | mTabMinButtonWidth = 20; |
| 34 | mTabMaxButtonWidth = 160; |
| 35 | mTabControlWidth = 20; |
| 36 | mTabButtonHorizontalPadding = 10; |
| 37 | mTabButtonVerticalPadding = 2; |
| 38 | |
| 39 | mDropShadow = Color(0, 128); |
| 40 | mTransparent = Color(0, 0); |
| 41 | mBorderDark = Color(29, 255); |
| 42 | mBorderLight = Color(92, 255); |
| 43 | mBorderMedium = Color(35, 255); |
| 44 | mTextColor = Color(255, 160); |
| 45 | mDisabledTextColor = Color(255, 80); |
| 46 | mTextColorShadow = Color(0, 160); |
| 47 | mIconColor = mTextColor; |
| 48 | |
| 49 | mButtonGradientTopFocused = Color(64, 255); |
| 50 | mButtonGradientBotFocused = Color(48, 255); |
| 51 | mButtonGradientTopUnfocused = Color(74, 255); |
| 52 | mButtonGradientBotUnfocused = Color(58, 255); |
| 53 | mButtonGradientTopPushed = Color(41, 255); |
| 54 | mButtonGradientBotPushed = Color(29, 255); |
| 55 | |
| 56 | /* Window-related */ |
| 57 | mWindowFillUnfocused = Color(43, 230); |
| 58 | mWindowFillFocused = Color(45, 230); |
| 59 | mWindowTitleUnfocused = Color(220, 160); |
| 60 | mWindowTitleFocused = Color(255, 190); |
| 61 | |
| 62 | mWindowHeaderGradientTop = mButtonGradientTopUnfocused; |
| 63 | mWindowHeaderGradientBot = mButtonGradientBotUnfocused; |
| 64 | mWindowHeaderSepTop = mBorderLight; |
| 65 | mWindowHeaderSepBot = mBorderDark; |
| 66 | |
| 67 | mWindowPopup = Color(50, 255); |
| 68 | mWindowPopupTransparent = Color(50, 0); |
| 69 | |
| 70 | mCheckBoxIcon = ENTYPO_ICON_CHECK; |
| 71 | mMessageInformationIcon = ENTYPO_ICON_INFO_WITH_CIRCLE; |
| 72 | mMessageQuestionIcon = ENTYPO_ICON_HELP_WITH_CIRCLE; |
| 73 | mMessageWarningIcon = ENTYPO_ICON_WARNING; |
| 74 | mMessageAltButtonIcon = ENTYPO_ICON_CIRCLE_WITH_CROSS; |
| 75 | mMessagePrimaryButtonIcon = ENTYPO_ICON_CHECK; |
| 76 | mPopupChevronRightIcon = ENTYPO_ICON_CHEVRON_RIGHT; |
| 77 | mPopupChevronLeftIcon = ENTYPO_ICON_CHEVRON_LEFT; |
| 78 | mTabHeaderLeftIcon = ENTYPO_ICON_ARROW_BOLD_LEFT; |
| 79 | mTabHeaderRightIcon = ENTYPO_ICON_ARROW_BOLD_RIGHT; |
| 80 | mTextBoxUpIcon = ENTYPO_ICON_CHEVRON_UP; |
| 81 | mTextBoxDownIcon = ENTYPO_ICON_CHEVRON_DOWN; |
| 82 | |
| 83 | mFontNormal = nvgCreateFontMem(ctx, "sans" , roboto_regular_ttf, |
| 84 | roboto_regular_ttf_size, 0); |
| 85 | mFontBold = nvgCreateFontMem(ctx, "sans-bold" , roboto_bold_ttf, |
| 86 | roboto_bold_ttf_size, 0); |
| 87 | mFontIcons = nvgCreateFontMem(ctx, "icons" , entypo_ttf, |
| 88 | entypo_ttf_size, 0); |
| 89 | if (mFontNormal == -1 || mFontBold == -1 || mFontIcons == -1) |
| 90 | throw std::runtime_error("Could not load fonts!" ); |
| 91 | } |
| 92 | |
| 93 | NAMESPACE_END(nanogui) |
| 94 | |