1 /* 2 * Copyright 2009-2020 Haiku, Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * François Revol, revol@free.fr 7 * Nahuel Tello, ntello@unarix.com.ar 8 */ 9 #ifndef FLAT_CONTROL_LOOK_H 10 #define FLAT_CONTROL_LOOK_H 11 12 13 #include <ControlLook.h> 14 15 #include "HaikuControlLook.h" 16 17 18 class BBitmap; 19 class BControl; 20 class BGradientLinear; 21 class BView; 22 23 namespace BPrivate { 24 25 using BPrivate::HaikuControlLook; 26 27 class FlatControlLook : public HaikuControlLook { 28 public: 29 FlatControlLook(); 30 virtual ~FlatControlLook(); 31 32 33 virtual void DrawButtonFrame(BView* view, BRect& rect, 34 const BRect& updateRect, 35 const rgb_color& base, 36 const rgb_color& background, 37 uint32 flags = 0, 38 uint32 borders = B_ALL_BORDERS); 39 virtual void DrawButtonFrame(BView* view, BRect& rect, 40 const BRect& updateRect, 41 float radius, 42 const rgb_color& base, 43 const rgb_color& background, 44 uint32 flags = 0, 45 uint32 borders = B_ALL_BORDERS); 46 virtual void DrawButtonFrame(BView* view, BRect& rect, 47 const BRect& updateRect, 48 float leftTopRadius, 49 float rightTopRadius, 50 float leftBottomRadius, 51 float rightBottomRadius, 52 const rgb_color& base, 53 const rgb_color& background, 54 uint32 flags = 0, 55 uint32 borders = B_ALL_BORDERS); 56 57 virtual void DrawMenuBarBackground(BView* view, BRect& rect, 58 const BRect& updateRect, 59 const rgb_color& base, 60 uint32 flags, 61 uint32 borders = B_ALL_BORDERS); 62 virtual void DrawMenuItemBackground(BView* view, 63 BRect& rect, const BRect& updateRect, 64 const rgb_color& base, uint32 flags = 0, 65 uint32 borders = B_ALL_BORDERS); 66 virtual void DrawMenuFieldFrame(BView* view, BRect& rect, 67 const BRect& updateRect, const rgb_color& base, 68 const rgb_color& background, uint32 flags, uint32 borders); 69 virtual void DrawMenuFieldFrame(BView* view, BRect& rect, 70 const BRect& updateRect, float radius, const rgb_color& base, 71 const rgb_color& background, uint32 flags, uint32 borders); 72 virtual void DrawMenuFieldFrame(BView* view, BRect& rect, 73 const BRect& updateRect, float leftTopRadius, 74 float rightTopRadius, float leftBottomRadius, 75 float rightBottomRadius, const rgb_color& base, 76 const rgb_color& background, uint32 flags, uint32 borders); 77 78 virtual void DrawMenuBackground(BView* view, 79 BRect& rect, const BRect& updateRect, 80 const rgb_color& base, uint32 flags = 0, 81 uint32 borders = B_ALL_BORDERS); 82 83 virtual void DrawScrollBarBorder(BView* view, 84 BRect rect, const BRect& updateRect, 85 const rgb_color& base, uint32 flags, 86 orientation orientation); 87 virtual void DrawScrollBarButton(BView* view, 88 BRect rect, const BRect& updateRect, 89 const rgb_color& base, uint32 flags, 90 int32 direction, orientation orientation, 91 bool down = false); 92 virtual void DrawScrollBarBackground(BView* view, 93 BRect& rect1, BRect& rect2, 94 const BRect& updateRect, 95 const rgb_color& base, uint32 flags, 96 orientation orientation); 97 virtual void DrawScrollBarBackground(BView* view, 98 BRect& rect, const BRect& updateRect, 99 const rgb_color& base, uint32 flags, 100 orientation orientation); 101 virtual void DrawScrollBarThumb(BView* view, 102 BRect& rect, const BRect& updateRect, 103 const rgb_color& base, uint32 flags, 104 orientation orientation, 105 uint32 knobStyle = B_KNOB_NONE); 106 107 virtual void DrawScrollViewFrame(BView* view, 108 BRect& rect, const BRect& updateRect, 109 BRect verticalScrollBarFrame, 110 BRect horizontalScrollBarFrame, 111 const rgb_color& base, 112 border_style borderStyle, 113 uint32 flags = 0, 114 uint32 borders = B_ALL_BORDERS); 115 116 virtual rgb_color SliderBarColor(const rgb_color& base); 117 118 virtual void DrawSliderBar(BView* view, BRect rect, 119 const BRect& updateRect, 120 const rgb_color& base, 121 rgb_color leftFillColor, 122 rgb_color rightFillColor, 123 float sliderScale, uint32 flags, 124 orientation orientation); 125 virtual void DrawSliderBar(BView* view, BRect rect, 126 const BRect& updateRect, 127 const rgb_color& base, rgb_color fillColor, 128 uint32 flags, orientation orientation); 129 130 virtual void DrawSliderThumb(BView* view, BRect& rect, 131 const BRect& updateRect, 132 const rgb_color& base, uint32 flags, 133 orientation orientation); 134 135 virtual void DrawActiveTab(BView* view, BRect& rect, 136 const BRect& updateRect, 137 const rgb_color& base, uint32 flags = 0, 138 uint32 borders = B_ALL_BORDERS, 139 uint32 side = B_TOP_BORDER, 140 int32 index = 0, int32 selected = -1, 141 int32 first = 0, int32 last = 0); 142 143 virtual void DrawButtonBackground(BView* view, BRect& rect, 144 const BRect& updateRect, 145 const rgb_color& base, 146 uint32 flags = 0, 147 uint32 borders = B_ALL_BORDERS, 148 orientation orientation = B_HORIZONTAL); 149 virtual void DrawButtonBackground(BView* view, BRect& rect, 150 const BRect& updateRect, 151 float radius, 152 const rgb_color& base, 153 uint32 flags = 0, 154 uint32 borders = B_ALL_BORDERS, 155 orientation orientation = B_HORIZONTAL); 156 virtual void DrawButtonBackground(BView* view, BRect& rect, 157 const BRect& updateRect, 158 float leftTopRadius, 159 float rightTopRadius, 160 float leftBottomRadius, 161 float rightBottomRadius, 162 const rgb_color& base, 163 uint32 flags = 0, 164 uint32 borders = B_ALL_BORDERS, 165 orientation orientation = B_HORIZONTAL); 166 167 virtual void DrawButtonWithPopUpBackground(BView* view, 168 BRect& rect, const BRect& updateRect, 169 const rgb_color& base, 170 uint32 flags = 0, 171 uint32 borders = B_ALL_BORDERS, 172 orientation orientation = B_HORIZONTAL); 173 virtual void DrawButtonWithPopUpBackground(BView* view, 174 BRect& rect, const BRect& updateRect, 175 float radius, 176 const rgb_color& base, 177 uint32 flags = 0, 178 uint32 borders = B_ALL_BORDERS, 179 orientation orientation = B_HORIZONTAL); 180 virtual void DrawButtonWithPopUpBackground(BView* view, 181 BRect& rect, const BRect& updateRect, 182 float leftTopRadius, 183 float rightTopRadius, 184 float leftBottomRadius, 185 float rightBottomRadius, 186 const rgb_color& base, 187 uint32 flags = 0, 188 uint32 borders = B_ALL_BORDERS, 189 orientation orientation = B_HORIZONTAL); 190 191 virtual void DrawGroupFrame(BView* view, BRect& rect, 192 const BRect& updateRect, 193 const rgb_color& base, 194 uint32 borders = B_ALL_BORDERS); 195 196 virtual void DrawTextControlBorder(BView* view, BRect& rect, 197 const BRect& updateRect, 198 const rgb_color& base, uint32 flags = 0, 199 uint32 borders = B_ALL_BORDERS); 200 201 virtual void DrawMenuFieldBackground(BView* view, BRect& rect, 202 const BRect& updateRect, const rgb_color& base, 203 bool popupIndicator, uint32 flags); 204 virtual void DrawMenuFieldBackground(BView* view, BRect& rect, 205 const BRect& updateRect, const rgb_color& base, 206 uint32 flags, uint32 borders); 207 virtual void DrawMenuFieldBackground(BView* view, BRect& rect, 208 const BRect& updateRect, float radius, const rgb_color& base, 209 bool popupIndicator, uint32 flags); 210 virtual void DrawMenuFieldBackground(BView* view, BRect& rect, 211 const BRect& updateRect, float leftTopRadius, 212 float rightTopRadius, float leftBottomRadius, 213 float rightBottomRadius, const rgb_color& base, 214 bool popupIndicator, uint32 flags); 215 virtual void DrawSplitter(BView* view, BRect& rect, const BRect& updateRect, 216 const rgb_color& base, orientation orientation, uint32 flags, 217 uint32 borders); 218 virtual void DrawRaisedBorder(BView* view, BRect& rect, 219 const BRect& updateRect, const rgb_color& base, uint32 flags, 220 uint32 borders); 221 virtual void DrawBorder(BView* view, BRect& rect, const BRect& updateRect, 222 const rgb_color& base, border_style borderStyle, uint32 flags, 223 uint32 borders); 224 225 protected: 226 void _DrawButtonBackground(BView* view, BRect& rect, 227 const BRect& updateRect, 228 float leftTopRadius, 229 float rightTopRadius, 230 float leftBottomRadius, 231 float rightBottomRadius, 232 const rgb_color& base, 233 bool popupIndicator = false, 234 uint32 flags = 0, 235 uint32 borders = B_ALL_BORDERS, 236 orientation orientation = B_HORIZONTAL); 237 void _DrawNonFlatButtonBackground(BView* view, BRect& rect, 238 const BRect& updateRect, 239 BRegion& clipping, 240 float leftTopRadius, 241 float rightTopRadius, 242 float leftBottomRadius, 243 float rightBottomRadius, 244 const rgb_color& base, 245 bool popupIndicator, 246 uint32 flags, 247 uint32 borders, 248 orientation orientation); 249 250 void _DrawMenuFieldBackgroundInside(BView* view, BRect& rect, 251 const BRect& updateRect, float leftTopRadius, 252 float rightTopRadius, float leftBottomRadius, 253 float rightBottomRadius, const rgb_color& base, 254 uint32 flags, uint32 borders); 255 void _DrawMenuFieldBackgroundOutside(BView* view, BRect& rect, 256 const BRect& updateRect, float leftTopRadius, 257 float rightTopRadius, float leftBottomRadius, 258 float rightBottomRadius, const rgb_color& base, 259 bool popupIndicator, uint32 flags); 260 261 void _DrawOuterResessedFrame(BView* view, BRect& rect, 262 const rgb_color& base, float contrast, float brightness, 263 uint32 flags, uint32 borders); 264 265 void _DrawButtonFrame(BView* view, BRect& rect, 266 const BRect& updateRect, 267 float leftTopRadius, 268 float rightTopRadius, 269 float leftBottomRadius, 270 float rightBottomRadius, 271 const rgb_color& base, 272 const rgb_color& background, 273 float contrast, float brightness = 1.0, 274 uint32 flags = 0, 275 uint32 borders = B_ALL_BORDERS); 276 277 void _DrawPopUpMarker(BView* view, const BRect& rect, 278 const rgb_color& base, uint32 flags); 279 280 rgb_color _EdgeLightColor(const rgb_color& base, float contrast, 281 float brightness, uint32 flags); 282 rgb_color _EdgeShadowColor(const rgb_color& base, float contrast, 283 float brightness, uint32 flags); 284 285 rgb_color _BevelLightColor(const rgb_color& base, 286 uint32 flags); 287 288 rgb_color _BevelShadowColor(const rgb_color& base, 289 uint32 flags); 290 291 void _MakeGradient(BGradientLinear& gradient, 292 const BRect& rect, const rgb_color& base, 293 float topTint, float bottomTint, 294 orientation orientation = B_HORIZONTAL) const; 295 296 void _MakeGlossyGradient(BGradientLinear& gradient, 297 const BRect& rect, const rgb_color& base, 298 float topTint, float middle1Tint, 299 float middle2Tint, float bottomTint, 300 orientation orientation = B_HORIZONTAL) const; 301 302 void _MakeButtonGradient(BGradientLinear& gradient, 303 BRect& rect, const rgb_color& base, 304 uint32 flags, orientation orientation = B_HORIZONTAL) const; 305 }; 306 307 }// bprivate 308 309 #endif // FLAT_CONTROL_LOOK_H 310