diff options
author | Luo Jinghua <sunmoon1997@gmail.com> | 2011-11-19 13:38:58 +0800 |
---|---|---|
committer | Luo Jinghua <sunmoon1997@gmail.com> | 2011-11-19 14:04:27 +0800 |
commit | 9459f9a638500095f242f1c50b8deab1c154b8d9 (patch) | |
tree | e7f961c3fdfdbe2cc8f3ccb131e2f90ac67c0c33 | |
parent | aefce33024df3debb4fa5e3a17ced4644159dfa2 (diff) |
SexyAppFramework: Fade in/out the selected widget
9 files changed, 73 insertions, 16 deletions
diff --git a/osframework/source/SexyAppFramework/ButtonWidget.cpp b/osframework/source/SexyAppFramework/ButtonWidget.cpp index 305030d..bfaacbc 100644 --- a/osframework/source/SexyAppFramework/ButtonWidget.cpp +++ b/osframework/source/SexyAppFramework/ButtonWidget.cpp @@ -103,6 +103,12 @@ void ButtonWidget::Draw(Graphics* g) if (!mFrameNoDraw) { g->SetColor(mColors[COLOR_BKG]); + if (mIsSelected) + { + Color col = g->GetColor(); + col.mAlpha = AlphaMod(col.mAlpha, mSelectAlpha * 255); + g->SetColor(col); + } g->FillRect(0, 0, mWidth, mHeight); } @@ -177,7 +183,16 @@ void ButtonWidget::Draw(Graphics* g) } else if ((mIsOver || mIsDown || mHasFocus) && HaveButtonImage(mOverImage,mOverRect)) { + if (mIsSelected) + { + g->SetColorizeImages(true); + g->SetColor(Color(255, 255, 255, mSelectAlpha * 255)); + } + DrawButtonImage(g,mOverImage,mOverRect,0,0); + + if (mIsSelected) + g->SetColorizeImages(false); } else if (HaveButtonImage(mButtonImage,mNormalRect)) DrawButtonImage(g,mButtonImage,mNormalRect,0,0); @@ -323,7 +338,7 @@ bool ButtonWidget::KeyUp(KeyCode theKey) } void ButtonWidget::Update() { - Widget::Update(); + SelectableWidget::Update(); if (mLastLabel != mLabel) { diff --git a/osframework/source/SexyAppFramework/ButtonWidget.h b/osframework/source/SexyAppFramework/ButtonWidget.h index 298ffb8..6d1ce6e 100644 --- a/osframework/source/SexyAppFramework/ButtonWidget.h +++ b/osframework/source/SexyAppFramework/ButtonWidget.h @@ -1,7 +1,7 @@ #ifndef __BUTTONWIDGET_H__ #define __BUTTONWIDGET_H__ -#include "Widget.h" +#include "SelectableWidget.h" #include "TextLayout.h" namespace Sexy @@ -10,7 +10,7 @@ namespace Sexy class Image; class ButtonListener; -class ButtonWidget : public Widget +class ButtonWidget : public SelectableWidget { public: enum { diff --git a/osframework/source/SexyAppFramework/Checkbox.cpp b/osframework/source/SexyAppFramework/Checkbox.cpp index 5f1aaa9..ee65c95 100644 --- a/osframework/source/SexyAppFramework/Checkbox.cpp +++ b/osframework/source/SexyAppFramework/Checkbox.cpp @@ -38,7 +38,12 @@ void Checkbox::Draw(Graphics* g) g->DrawImage(mApp->mImages[IMAGE_CHECKBOX], 0, 0, Rect(0, 0, 31, 32)); else g->DrawImage(mApp->mImages[IMAGE_CHECKBOX], 0, 0, Rect(31, 0, 31, 32));*/ - + if (mIsSelected) + { + g->SetColorizeImages(true); + g->SetColor(GetSelectColor()); + } + if ((mCheckedRect.mWidth == 0) && (mCheckedImage != NULL) && (mUncheckedImage != NULL)) { if (mChecked) @@ -68,6 +73,9 @@ void Checkbox::Draw(Graphics* g) g->DrawLine(mWidth - 1, 1, 1, mHeight - 2); } } + + if (mIsSelected) + g->SetColorizeImages(false); } void Checkbox::TouchDown(int id, int x, int y, int tapCount) diff --git a/osframework/source/SexyAppFramework/Checkbox.h b/osframework/source/SexyAppFramework/Checkbox.h index 797c7ab..dcee1d6 100644 --- a/osframework/source/SexyAppFramework/Checkbox.h +++ b/osframework/source/SexyAppFramework/Checkbox.h @@ -1,7 +1,7 @@ #ifndef __CHECKBOX_H__ #define __CHECKBOX_H__ -#include "Widget.h" +#include "SelectableWidget.h" namespace Sexy { @@ -9,7 +9,7 @@ namespace Sexy class CheckboxListener; class Image; -class Checkbox : public Widget +class Checkbox : public SelectableWidget { protected: CheckboxListener* mListener; diff --git a/osframework/source/SexyAppFramework/DialogButton.cpp b/osframework/source/SexyAppFramework/DialogButton.cpp index 2c3bd71..25f4301 100644 --- a/osframework/source/SexyAppFramework/DialogButton.cpp +++ b/osframework/source/SexyAppFramework/DialogButton.cpp @@ -47,7 +47,16 @@ void DialogButton::Draw(Graphics* g) if (doTranslate) g->Translate(mTranslateX, mTranslateY); + if (mIsSelected) + { + g->SetColorizeImages(true); + g->SetColor(GetSelectColor()); + } + g->DrawImageBox(Rect(0, 0, mWidth, mHeight), mComponentImage); + + if (mIsSelected) + g->SetColorizeImages(false); } else { @@ -66,7 +75,22 @@ void DialogButton::Draw(Graphics* g) g->SetColorizeImages(false); } else if(mIsOver || mHasFocus) - g->DrawImageBox(mOverRect, Rect(0, 0, mWidth, mHeight), mComponentImage); + { + if (mIsSelected) + { + if (mSelectAlpha < 1.0f) + g->DrawImageBox(mNormalRect, Rect(0, 0, mWidth, mHeight), mComponentImage); + + g->SetColorizeImages(true); + g->SetColor(Color(255,255,255,(int)(mSelectAlpha * 255))); + g->DrawImageBox(mOverRect, Rect(0, 0, mWidth, mHeight), mComponentImage); + g->SetColorizeImages(false); + } + else + { + g->DrawImageBox(mOverRect, Rect(0, 0, mWidth, mHeight), mComponentImage); + } + } else g->DrawImageBox(mNormalRect, Rect(0, 0, mWidth, mHeight), mComponentImage); diff --git a/osframework/source/SexyAppFramework/HyperlinkWidget.cpp b/osframework/source/SexyAppFramework/HyperlinkWidget.cpp index 05b7e0a..3a06569 100644 --- a/osframework/source/SexyAppFramework/HyperlinkWidget.cpp +++ b/osframework/source/SexyAppFramework/HyperlinkWidget.cpp @@ -33,6 +33,13 @@ void HyperlinkWidget::Draw(Graphics* g) else g->SetColor(mColor); + if (mHasFocus && mIsSelected) + { + Color col = g->GetColor(); + col.mAlpha = AlphaMod(col.mAlpha, mSelectAlpha * 255); + g->SetColor(col); + } + g->SetFont(mFont); //g->DrawString(mLabel, aFontX, aFontY); mLabelText.Draw(g, aFontX, aFontY, g->GetColor()); diff --git a/osframework/source/SexyAppFramework/ListWidget.cpp b/osframework/source/SexyAppFramework/ListWidget.cpp index fb79b1b..442f913 100644 --- a/osframework/source/SexyAppFramework/ListWidget.cpp +++ b/osframework/source/SexyAppFramework/ListWidget.cpp @@ -396,17 +396,11 @@ void ListWidget::Draw(Graphics *g) aClipG.DrawString(aString, aFontX, aDrawY + mFont->GetAscent() + anItemOffset); } - if (mDrawOutline) + if (mDrawOutline || mIsSelected) { g->SetColor(mColors[COLOR_OUTLINE]); g->DrawRect(0, 0, mWidth-1, mHeight-1); } - - if (mHasFocus) - { - g->SetColor (Color(255, 255, 0)); - g->DrawRect (0, 0, mWidth - 1, mHeight - 1); - } } void ListWidget::ScrollPosition(int theId, double thePosition) diff --git a/osframework/source/SexyAppFramework/Slider.cpp b/osframework/source/SexyAppFramework/Slider.cpp index 18fc4f1..20c93eb 100644 --- a/osframework/source/SexyAppFramework/Slider.cpp +++ b/osframework/source/SexyAppFramework/Slider.cpp @@ -42,6 +42,12 @@ void Slider::Draw(Graphics* g) int cw = mHorizontal ? mTrackImage->GetWidth()/3 : mTrackImage->GetWidth(); int ch = mHorizontal ? mTrackImage->GetHeight() : mTrackImage->GetHeight()/3; + if (mIsSelected) + { + g->SetColorizeImages(true); + g->SetColor(GetSelectColor()); + } + if (mHorizontal) { int ty = (mHeight - ch) / 2; @@ -65,6 +71,9 @@ void Slider::Draw(Graphics* g) g->DrawImage(mTrackImage, 0, mHeight-ch, Rect(0, ch*2, cw, ch)); } + + if (mIsSelected) + g->SetColorizeImages(false); } if (mHorizontal && (mThumbImage != NULL)) diff --git a/osframework/source/SexyAppFramework/Slider.h b/osframework/source/SexyAppFramework/Slider.h index 84bbab2..2f6d19b 100644 --- a/osframework/source/SexyAppFramework/Slider.h +++ b/osframework/source/SexyAppFramework/Slider.h @@ -1,14 +1,14 @@ #ifndef __SLIDER_H__ #define __SLIDER_H__ -#include "Widget.h" +#include "SelectableWidget.h" namespace Sexy { class SliderListener; -class Slider : public Widget +class Slider : public SelectableWidget { public: SliderListener* mListener; |