summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuo Jinghua <sunmoon1997@gmail.com>2011-11-19 13:38:58 +0800
committerLuo Jinghua <sunmoon1997@gmail.com>2011-11-19 14:04:27 +0800
commit9459f9a638500095f242f1c50b8deab1c154b8d9 (patch)
treee7f961c3fdfdbe2cc8f3ccb131e2f90ac67c0c33
parentaefce33024df3debb4fa5e3a17ced4644159dfa2 (diff)
SexyAppFramework: Fade in/out the selected widget
-rw-r--r--osframework/source/SexyAppFramework/ButtonWidget.cpp17
-rw-r--r--osframework/source/SexyAppFramework/ButtonWidget.h4
-rw-r--r--osframework/source/SexyAppFramework/Checkbox.cpp10
-rw-r--r--osframework/source/SexyAppFramework/Checkbox.h4
-rw-r--r--osframework/source/SexyAppFramework/DialogButton.cpp26
-rw-r--r--osframework/source/SexyAppFramework/HyperlinkWidget.cpp7
-rw-r--r--osframework/source/SexyAppFramework/ListWidget.cpp8
-rw-r--r--osframework/source/SexyAppFramework/Slider.cpp9
-rw-r--r--osframework/source/SexyAppFramework/Slider.h4
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;