55namespace BI
66{
77
8+ static const NUIE::Pen ButtonBorderPen = NUIE::Pen (NUIE::Color (50 , 75 , 100 ), 1.0 );
9+ static const NUIE::Color ButtonBackgroundColor = NUIE::Color (150 , 175 , 200 );
10+ static const NUIE::Color ButtonSelectedBackgroundColor = NUIE::Color (190 , 215 , 240 );
11+
812SlotRectCollection::SlotRectCollection ()
913{
1014
@@ -254,9 +258,6 @@ void NodeUISlotPanel::Draw (NUIE::NodeUIDrawingEnvironment& env, const NUIE::Rec
254258 });
255259}
256260
257- const NUIE::Pen NodeUILeftRightButtonsPanel::DefaultButtonBorderPen = NUIE::Pen (NUIE::Color (50 , 75 , 100 ), 1.0 );
258- const NUIE::Color NodeUILeftRightButtonsPanel::DefaultButtonBackgroundColor = NUIE::Color (150 , 175 , 200 );
259-
260261NodeUILeftRightButtonsPanel::NodeUILeftRightButtonsPanel ( const std::string& leftButtonId,
261262 const std::wstring& leftButtonText,
262263 const std::string& rightButtonId,
@@ -293,9 +294,8 @@ void NodeUILeftRightButtonsPanel::Draw (NUIE::NodeUIDrawingEnvironment& env, con
293294 const NUIE::SkinParams& skinParams = env.GetSkinParams ();
294295 double nodePadding = skinParams.GetNodePadding ();
295296
296- const NUIE::Color backgroundColor = GetBackgroundColor (env);
297- const NUIE::Color buttonBackgroundColor = GetButtonBackgroundColor (env);
298- const NUIE::Color textColor = GetTextColor (env);
297+ const NUIE::Color backgroundColor = skinParams.GetNodeContentBackgroundColor ();
298+ const NUIE::Color textColor = skinParams.GetNodeContentTextColor ();
299299
300300 drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingFillRect (rect, backgroundColor)));
301301
@@ -304,35 +304,72 @@ void NodeUILeftRightButtonsPanel::Draw (NUIE::NodeUIDrawingEnvironment& env, con
304304 NUIE::Rect textRect = NUIE::Rect::FromPositionAndSize (leftButtonRect.GetTopRight (), NUIE::Size (rightButtonRect.GetLeft () - leftButtonRect.GetRight (), panelTextSize.GetHeight ()));
305305 drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingText (textRect, skinParams.GetNodeTextFont (), panelText, NUIE::HorizontalAnchor::Center, NUIE::VerticalAnchor::Center, textColor)));
306306
307- drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingFillRect (leftButtonRect, buttonBackgroundColor )));
307+ drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingFillRect (leftButtonRect, ButtonBackgroundColor )));
308308 drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingText (leftButtonRect, skinParams.GetNodeTextFont (), leftButtonText, NUIE::HorizontalAnchor::Center, NUIE::VerticalAnchor::Center, textColor)));
309- drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingRect (leftButtonRect, GetButtonBorderPen (env) )));
309+ drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingRect (leftButtonRect, ButtonBorderPen )));
310310 drawingImage.AddSpecialRect (leftButtonId, leftButtonRect);
311311
312- drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingFillRect (rightButtonRect, buttonBackgroundColor )));
312+ drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingFillRect (rightButtonRect, ButtonBackgroundColor )));
313313 drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingText (rightButtonRect, skinParams.GetNodeTextFont (), rightButtonText, NUIE::HorizontalAnchor::Center, NUIE::VerticalAnchor::Center, textColor)));
314- drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingRect (rightButtonRect, GetButtonBorderPen (env) )));
314+ drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingRect (rightButtonRect, ButtonBorderPen )));
315315 drawingImage.AddSpecialRect (rightButtonId, rightButtonRect);
316316}
317317
318- NUIE::Color NodeUILeftRightButtonsPanel::GetTextColor (NUIE::NodeUIDrawingEnvironment& env) const
318+ NodeUISwitchPanel::NodeUISwitchPanel ( const std::string& switchRectId,
319+ const std::wstring& leftSwitchText,
320+ const std::wstring& rightSwitchText,
321+ short selectedIndex,
322+ NUIE::NodeUIDrawingEnvironment& env) :
323+ switchRectId (switchRectId),
324+ leftSwitchText (leftSwitchText),
325+ rightSwitchText (rightSwitchText),
326+ selectedIndex (selectedIndex)
319327{
320- return env.GetSkinParams ().GetNodeContentTextColor ();
328+ const NUIE::SkinParams& skinParams = env.GetSkinParams ();
329+ double nodePadding = skinParams.GetNodePadding ();
330+ leftSwitchSize = env.GetDrawingContext ().MeasureText (skinParams.GetNodeTextFont (), leftSwitchText).Grow (2.0 * nodePadding, nodePadding);
331+ rightSwitchSize = env.GetDrawingContext ().MeasureText (skinParams.GetNodeTextFont (), rightSwitchText).Grow (2.0 * nodePadding, nodePadding);
321332}
322333
323- NUIE::Color NodeUILeftRightButtonsPanel::GetBackgroundColor (NUIE::NodeUIDrawingEnvironment& env) const
334+ NUIE::Size NodeUISwitchPanel::GetMinSize (NUIE::NodeUIDrawingEnvironment& env) const
324335{
325- return env.GetSkinParams ().GetNodeContentBackgroundColor ();
336+ const NUIE::SkinParams& skinParams = env.GetSkinParams ();
337+ double nodePadding = skinParams.GetNodePadding ();
338+ NUIE::Size minSize;
339+ minSize.SetWidth (leftSwitchSize.GetWidth () + rightSwitchSize.GetWidth ());
340+ minSize.SetHeight (std::max (leftSwitchSize.GetHeight (), rightSwitchSize.GetHeight ()));
341+ minSize = minSize.Grow (2.0 * nodePadding, 2.0 * nodePadding);
342+ return minSize;
326343}
327344
328- NUIE::Pen NodeUILeftRightButtonsPanel::GetButtonBorderPen ( NUIE::NodeUIDrawingEnvironment& ) const
345+ void NodeUISwitchPanel::Draw ( NUIE::NodeUIDrawingEnvironment& env, const NUIE::Rect& rect, NUIE::NodeDrawingImage& drawingImage ) const
329346{
330- return DefaultButtonBorderPen;
331- }
347+ const NUIE::SkinParams& skinParams = env.GetSkinParams ();
348+ const NUIE::Color backgroundColor = skinParams.GetNodeContentBackgroundColor ();
349+ const NUIE::Color textColor = skinParams.GetNodeContentTextColor ();
332350
333- NUIE::Color NodeUILeftRightButtonsPanel::GetButtonBackgroundColor (NUIE::NodeUIDrawingEnvironment&) const
334- {
335- return DefaultButtonBackgroundColor;
351+ drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingFillRect (rect, backgroundColor)));
352+
353+ NUIE::Size switchSize (
354+ leftSwitchSize.GetWidth () + rightSwitchSize.GetWidth (),
355+ std::max (leftSwitchSize.GetHeight (), rightSwitchSize.GetHeight ())
356+ );
357+ NUIE::Rect switchRect = NUIE::Rect::FromCenterAndSize (rect.GetCenter (), switchSize);
358+ NUIE::Rect leftSwitchRect = NUIE::Rect::FromPositionAndSize (switchRect.GetTopLeft (), leftSwitchSize);
359+ NUIE::Rect rightSwitchRect = NUIE::Rect::FromPositionAndSize (leftSwitchRect.GetTopRight (), rightSwitchSize);
360+
361+ drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingFillRect (switchRect, ButtonBackgroundColor)));
362+ if (selectedIndex == 0 ) {
363+ drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingFillRect (leftSwitchRect, ButtonSelectedBackgroundColor)));
364+ } else if (selectedIndex == 1 ) {
365+ drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingFillRect (rightSwitchRect, ButtonSelectedBackgroundColor)));
366+ }
367+
368+ drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingText (leftSwitchRect, skinParams.GetNodeTextFont (), leftSwitchText, NUIE::HorizontalAnchor::Center, NUIE::VerticalAnchor::Center, textColor)));
369+ drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingText (rightSwitchRect, skinParams.GetNodeTextFont (), rightSwitchText, NUIE::HorizontalAnchor::Center, NUIE::VerticalAnchor::Center, textColor)));
370+
371+ drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingRect (switchRect, ButtonBorderPen)));
372+ drawingImage.AddSpecialRect (switchRectId, switchRect);
336373}
337374
338375}
0 commit comments