![]() ![]() ![]()
|
SophiaFramework 2.2 |
#include <SFRButtonBase.hpp>
class SFRButtonBase : public SFRControl;
typedef SFRButtonBase& SFRButtonBaseRef; typedef SFRButtonBase* SFRButtonBasePtr; typedef SFRButtonBase** SFRButtonBaseHandle; typedef const SFRButtonBase ConstSFRButtonBase; typedef const SFRButtonBase& ConstSFRButtonBaseRef; typedef const SFRButtonBase* ConstSFRButtonBasePtr; typedef const SFRButtonBase** ConstSFRButtonBaseHandle;
ボタンコントロールを表現するレスポンダを作成するときのベースとなるクラスです。 開発者はこのクラスを継承して、適切な仮想関数をオーバーライドすることで独自の ボタンコントロールを簡単に実装することができます。必ずオーバーライドしなければ ならない関数は、HandleContent() 関数です。この関数はボタンの実態を 描画するための関数です。独自実装のボタンを作るときの基本的なコードは以下の ようになります。
SFMTYPEDEFCLASS(UserButton)
class UserButton : public SFRButtonBase {
public:
UserButton (SFRResponderPtr, ConstSFURectRef, BehaviorType);
~UserButton (Void);
private:
virtual Void HandleContent (SFUGraphicsPtr);
virtual Void HandleRelease (Void);
};
UserButton::UserButton(SFRResponderPtr director, ConstSFURectRef rect, BehaviorType behavior)
: SFRButtonBase(director, rect, behavior, FOUR_CHAR_CODE('U', 's', 'e', 'r'))
{
return;
}
UserButton::~UserButton(Void)
{
return;
}
Void UserButton::HandleContent(SFUGraphicsPtr graphic)
{
SFUColor color;
if (GetInheriteEnable()) {
if (GetInheriteFocus()) {
if (GetStatusPress()) {
color.Set(0x44, 0x44, 0x44);
}
else {
color.Set(0x66, 0x66, 0x66);
}
}
else {
color.Set(0x88, 0x88, 0x88);
}
}
else {
color.Set(0xAA, 0xAA, 0xAA);
}
graphic->DrawRect(GetVirtualWorld(), color);
return;
}
Void UserButton::HandleRelease(Void)
{
Invoke(SFUEvent(SREVT_CONTROL, 0, reinterpret_brew<UInt32>(this)));
return;
}
このクラスを継承したクラスには、SFRButtonControl クラスがあります。
| コンストラクタ/デストラクタ | ||
|---|---|---|
| protected |
SFRButtonBase | SFRButtonBase クラスのコンストラクタです。 |
| protected |
~SFRButtonBase | SFRButtonBase クラスのデストラクタです。 |
| パブリック関数 | ||
|---|---|---|
| public |
FocusDown (SFRResponder から継承) | 座標上で自分より下に存在するレスポンダにフォーカスを移動します。 |
| public |
FocusLeft (SFRResponder から継承) | 座標上で自分より左に存在するレスポンダにフォーカスを移動します。 |
| public |
FocusNext (SFRResponder から継承) | フォーカスを一つ次に進めます。 |
| public |
FocusPrevious (SFRResponder から継承) | フォーカスを一つ前に戻します。 |
| public |
FocusRight (SFRResponder から継承) | 座標上で自分より右に存在するレスポンダにフォーカスを移動します。 |
| public |
FocusUp (SFRResponder から継承) | 座標上で自分より上に存在するレスポンダにフォーカスを移動します。 |
| public |
GetAttribute (SFRResponder から継承) | アトリビュートを取得します。 |
| public |
GetBack (SFRResponder から継承) | 子階層のレスポンダのうち検索条件に一致するレスポンダを 後ろから検索します。 |
| public |
GetBaseBound (SFRResponder から継承) | ベース領域を親レスポンダのコンテント座標系で取得します。 |
| public |
GetBaseWorld (SFRResponder から継承) | ベース領域を取得します。 |
| public |
GetContentBound (SFRResponder から継承) | コンテント領域をベース領域の座標系で取得します。 |
| public |
GetContentWorld (SFRResponder から継承) | コンテント領域を取得します。 |
| public |
GetDirector (SFRResponder から継承) | 親レスポンダを取得します。 |
| public |
GetFocus (SFRResponder から継承) | 子階層のレスポンダのうちフォーカスされているレスポンダを取得します。 |
| public |
GetFront (SFRResponder から継承) | 子階層のレスポンダのうち検索条件に一致するレスポンダを前から検索します。 |
| public |
GetIndexBackward (SFRResponder から継承) | 同階層のレスポンダのうち自分が背面から数えて何番目かを返します。 |
| public |
GetIndexForward (SFRResponder から継承) | 同階層のレスポンダのうち自分が前面から数えて何番目かを返します。 |
| public |
GetLeft (SFRResponder から継承) | グループ化されているレスポンダのうち 自分より前にあるレスポンダで検索条件に一致するレスポンダを検索します。 |
| public |
GetMoveInterval (SFRResponder から継承) | MoveUpHandler, MoveDownHandler, MoveLeftHandler, MoveRightHandler に よりレスポンダが移動されるときの移動量を取得します。 |
| public |
GetMoveMargin (SFRResponder から継承) | Move 関数によりレスポンダが移動されるときに、仮想領域の端から 何ピクセル内側まで移動可能かのマージンを取得します。 またこの設定は、MoveUpHandler, MoveDownHandler, MoveLeftHandler, MoveRightHandler にも 適応されています。 |
| public |
GetNext (SFRResponder から継承) | 自分より後にあるレスポンダで検索条件に一致するレスポンダを 検索します。 |
| public |
GetNthBackward (SFRResponder から継承) | 子階層のレスポンダのうち検索条件に一致するレスポンダで 後ろから数えてN番目にあるレスポンダを検索します。 |
| public |
GetNthForward (SFRResponder から継承) | 子階層のレスポンダのうち検索条件に一致するレスポンダで 前から数えてN番目にあるレスポンダを検索します。 |
| public |
GetPrevious (SFRResponder から継承) | 自分より前にあるレスポンダで検索条件に一致するレスポンダを 検索します。 |
| public |
GetReference (SFRResponder から継承) | ユーザが自由に設定できるリファレンス値を取得します。 |
| public |
GetRight (SFRResponder から継承) | グループ化されているレスポンダのうち 自分より後にあるレスポンダで検索条件に一致するレスポンダを検索します。 |
| public |
GetScrollInterval (SFRResponder から継承) | ScrollUpHandler, ScrollDownHandler, ScrollLeftHandler, ScrollRightHandler によりレスポンダの仮想領域がスクロールされるときのスクロール量を取得します。 |
| public |
GetStatusEnable (SFRResponder から継承) | 応答可能/不可能フラグを取得します。 |
| public |
GetStatusFocus (SFRResponder から継承) | フォーカス/非フォーカス フラグを取得します。 |
| public |
GetStatusTarget (SFRResponder から継承) | ターゲット/非ターゲット フラグを取得します。 |
| public |
GetStatusVisible (SFRResponder から継承) | 可視/不可視フラグを取得します。 |
| public |
GetTranslate (SFRResponder から継承) | コンテント座標系での仮想領域の原点座標を取得します。 |
| public |
GetTravelMargin (SFRResponder から継承) | フォーカスされたレスポンダを自動的にコンテント領域内に 移動させるときに、コンテント領域の端から何ピクセル内側に 移動させるかのマージンを取得します。 |
| public |
GetType (SFRResponder から継承) | タイプを取得します。 |
| public |
GetVirtualBound (SFRResponder から継承) | 仮想領域をコンテント領域の座標系で取得します。 |
| public |
GetVirtualWorld (SFRResponder から継承) | 仮想領域を取得します。 |
| public |
Group (SFRResponder から継承) | 他のレスポンダとグループ化します。 |
| public |
GroupMove (SFRResponder から継承) | グループ化されているレスポンダすべてを移動します。 |
| public |
GroupScroll (SFRResponder から継承) | グループ化されているレスポンダすべての仮想領域をスクロールします。 |
| public |
GroupSelect (SFRResponder から継承) | グループ化されているレスポンダすべてを最前面に移動させます。 |
| public |
GroupStatusEnable (SFRResponder から継承) | グループ化されているレスポンダすべてに対して、応答可能/不可能フラグを設定します。 |
| public |
GroupStatusVisible (SFRResponder から継承) | グループ化されているレスポンダすべてに対して、可視/不可視フラグを設定します。 |
| public |
InvalidateBase (SFRResponder から継承) | ベース領域内のアップデート領域を登録します。 |
| public |
InvalidateContent (SFRResponder から継承) | コンテント領域内のアップデート領域を登録します。 |
| public |
InvalidateVirtual (SFRResponder から継承) | 仮想領域内のアップデート領域を登録します。 |
| public |
Invoke (SFRResponder から継承) | イベントを送信します。 |
| public |
Move (SFRResponder から継承) | レスポンダを移動します。 |
| public |
RegisterHandler (SFRHandler から継承) | ハンドラを登録します。 |
| public |
RegisterIntelligentHandler (SFRResponder から継承) | SelectHandler, ClearHandler, FocusUpHandler, FocusDownHandler, FocusLeftHandler, FocusRightHandler をそれぞれ AVK_SELECT, AVK_CLR, AVK_UP, AVK_DOWN, AVK_LEFT, AVK_RIGHT に登録します。 |
| public |
RegisterManipulateHandler (SFRResponder から継承) | SelectHandler, ClearHandler, FocusNextHandler, FocusPreviousHandler を それぞれ AVK_SELECT, AVK_CLR, AVK_DOWN, AVK_UP に登録します。 |
| public |
RegisterMoveHandler (SFRResponder から継承) | MoveUpHandler, MoveDownHandler, MoveLeftHandler, MoveRightHandler を それぞれ AVK_2, AVK_8, AVK_4, AVK_6 に登録します。 |
| public |
RegisterScrollHandler (SFRResponder から継承) | ScrollUpHandler, ScrollDownHandler, ScrollLeftHandler, ScrollRightHandler を それぞれ AVK_2, AVK_8, AVK_4, AVK_6 に登録します。 |
| public |
RegisterTracer (SFRTracer から継承) | トレーサを登録します。 |
| public |
Scroll (SFRResponder から継承) | 仮想領域をスクロールします。 |
| public |
Select (SFRResponder から継承) | レスポンダを最前面に移動させます。 |
| public |
SetBaseBound (SFRResponder から継承) | ベース領域を親レスポンダのコンテント座標系で設定します。 |
| public |
SetContentBound | コンテント領域の座標を設定します。【無効】 |
| public |
SetMoveInterval (SFRResponder から継承) | MoveUpHandler, MoveDownHandler, MoveLeftHandler, MoveRightHandler に よりレスポンダが移動されるときの移動量を設定します。 |
| public |
SetMoveMargin (SFRResponder から継承) | Move 関数によりレスポンダが移動されるときに、仮想領域の端から 何ピクセル内側まで移動可能かのマージンを設定します。 またこの設定は、MoveUpHandler, MoveDownHandler, MoveLeftHandler, MoveRightHandler にも 適応されます。 |
| public |
SetReference (SFRResponder から継承) | ユーザが自由に設定できるリファレンス値を設定します。 |
| public |
SetScrollInterval (SFRResponder から継承) | ScrollUpHandler, ScrollDownHandler, ScrollLeftHandler, ScrollRightHandler によりレスポンダの仮想領域がスクロールされるときのスクロール量を設定します。 |
| public |
SetStatusEnable (SFRResponder から継承) | 応答可能/不可能フラグを設定します。 |
| public |
SetStatusFocus (SFRResponder から継承) | フォーカス/非フォーカス フラグを設定します。 |
| public |
SetStatusTarget (SFRResponder から継承) | ターゲット/非ターゲット フラグを設定します。 |
| public |
SetStatusVisible (SFRResponder から継承) | 可視/不可視フラグを設定します。 |
| public |
SetTranslate (SFRResponder から継承) | コンテント座標系での仮想領域の原点座標を設定します。 |
| public |
SetTravelMargin (SFRResponder から継承) | フォーカスされたレスポンダを自動的にコンテント領域内に 移動させるときに、コンテント領域の端から何ピクセル内側に 移動させるかのマージンを設定します。 |
| public |
SetVirtualBound | 仮想領域の座標を設定します。【無効】 |
| public |
Travel (SFRResponder から継承) | 設定された長方形が可視領域に入るように、レスポンダの 仮想領域をスクロールします。 |
| public |
Ungroup (SFRResponder から継承) | グループ化を解除します。 |
| public |
UnregisterHandler (SFRHandler から継承) | 登録されているハンドラを削除します。 |
| public |
UnregisterTracer (SFRTracer から継承) | 登録されているトレーサを削除します。 |
| プロテクト関数 | ||
|---|---|---|
| protected |
ClearHandler (SFRResponder から継承) | クリアキーが押されたときのハンドラです。 |
| protected |
FocusDownHandler (SFRResponder から継承) | 下矢印キーが押されたときのハンドラです。 座標上で自分より下に存在するレスポンダにフォーカスを移動します。 |
| protected |
FocusLeftHandler (SFRResponder から継承) | 左矢印キーが押されたときのハンドラです。 座標上で自分より左に存在するレスポンダにフォーカスを移動します。 |
| protected |
FocusNextHandler (SFRResponder から継承) | 下矢印キーが押されたときのハンドラです。 フォーカスを一つ後に移動します。 |
| protected |
FocusPreviousHandler (SFRResponder から継承) | 上矢印キーが押されたときのハンドラです。 フォーカスを一つ前に移動します。 |
| protected |
FocusRightHandler (SFRResponder から継承) | 右矢印キーが押されたときのハンドラです。 座標上で自分より右に存在するレスポンダにフォーカスを移動します。 |
| protected |
FocusUpHandler (SFRResponder から継承) | 上矢印キーが押されたときのハンドラです。 座標上で自分より上に存在するレスポンダにフォーカスを移動します。 |
| protected |
GetAppearanceTransparent (SFRResponder から継承) | APPEARANCE_TRANSPARENT フラグが設定されているかどうかを取得します。 |
| protected |
GetInheriteEnable (SFRResponder から継承) | 現在の応答可能/不可能の状態を取得します。 |
| protected |
GetInheriteFocus (SFRResponder から継承) | 現在のフォーカス/非フォーカスの状態を取得します。 |
| protected |
GetInheriteTarget (SFRResponder から継承) | 現在のターゲット/非ターゲットの状態を取得します。 |
| protected |
GetInheriteVisible (SFRResponder から継承) | 現在の可視/不可視の状態を取得します。 |
| protected |
GetPropertyClosable (SFRResponder から継承) | PROPERTY_CLOSABLE フラグが設定されているかどうかを取得します。 |
| protected |
GetPropertyDirect (SFRResponder から継承) | PROPERTY_DIRECT フラグが設定されているかどうかを取得します。 |
| protected |
GetPropertyMovable (SFRResponder から継承) | PROPERTY_MOVABLE フラグが設定されているかどうかを取得します。 |
| protected |
GetPropertyScrollable (SFRResponder から継承) | PROPERTY_SCROLLABLE フラグが設定されているかどうかを取得します。 |
| protected |
GetPropertySelect (SFRResponder から継承) | PROPERTY_SELECT フラグが設定されているかどうかを取得します。 |
| protected |
GetPropertyTravel (SFRResponder から継承) | PROPERTY_TRAVEL フラグが設定されているかどうかを取得します。 |
| protected |
GetStatusPress | キーが押されているかどうかを取得します。 |
| protected |
HandleContent | コンテント領域を描画します。 |
| protected |
HandlePress | キーが押されたときに実行されます。 |
| protected |
HandleRelease | キーが放されたときに実行されます。 |
| protected |
InvalidateButton | ボタンの領域をアップデート領域として登録します。 |
| protected |
MoveDownHandler (SFRResponder から継承) | 数字の8キーが押されたときのハンドラです。 |
| protected |
MoveLeftHandler (SFRResponder から継承) | 数字の4キーが押されたときのハンドラです。 |
| protected |
MoveRightHandler (SFRResponder から継承) | 数字の6キーが押されたときのハンドラです。 |
| protected |
MoveUpHandler (SFRResponder から継承) | 数字の2キーが押されたときのハンドラです。 |
| protected |
ScrollDownHandler (SFRResponder から継承) | 数字の8キーが押されたときのハンドラです。 |
| protected |
ScrollLeftHandler (SFRResponder から継承) | 数字の4キーが押されたときのハンドラです。 |
| protected |
ScrollRightHandler (SFRResponder から継承) | 数字の6キーが押されたときのハンドラです。 |
| protected |
ScrollUpHandler (SFRResponder から継承) | 数字の2キーが押されたときのハンドラです。 |
| protected |
SelectHandler (SFRResponder から継承) | セレクトキーが押されたときのハンドラです。 |
| protected |
UnregisterIntelligentHandler (SFRResponder から継承) | AVK_SELECT, AVK_CLR, AVK_UP, AVK_DOWN, AVK_LEFT, AVK_RIGHT に登録されているハンドラを 削除します。 |
| protected |
UnregisterManipulateHandler (SFRResponder から継承) | AVK_SELECT, AVK_CLR, AVK_DOWN, AVK_UP に登録されているハンドラを 削除します。 |
| protected |
UnregisterMoveHandler (SFRResponder から継承) | AVK_2, AVK_8, AVK_4, AVK_6 に登録されているハンドラを 削除します。 |
| protected |
UnregisterScrollHandler (SFRResponder から継承) | AVK_2, AVK_8, AVK_4, AVK_6 に登録されているハンドラを 削除します。 |
| 型 | ||
|---|---|---|
| BehaviorEnum (SFRControl から継承) | コントロールのデフォルトのビヘイビアを表します。 | |
| HandlerEnum (SFRHandler から継承) | ハンドラの呼び出されるタイミングを表します。 | |
| TracerEnum (SFRTracer から継承) | トレース順序を表します。 | |
[ protected ]
SFRButtonBase(
SFRResponderPtr director // 親レスポンダ
ConstSFURectRef rect // ベース領域
BehaviorType behavior // ビヘイビア
SFCType attribute // アトリビュート
);ボタンベースのコンストラクタです。
[ protected, virtual ] ~SFRButtonBase(Void);
[ protected, const ] Bool GetStatusPress(Void);
キーが押されている状態かどうかを取得します。 独自にボタンコントロールなどを実装する場合に、 キーの状態によって描画を変更したいときなどに、 この関数を使用することができます。
[ protected, virtual ] Void HandleContent( SFUGraphicsPtr graphic // グラフィックスオブジェクト );
ボタンのコンテント領域を描画する関数です。 ボタンを独自実装する場合は、この関数をオーバーライドして ボタン自身を描画します。
独自にボタンを描画します。操作可能 / 不可能、 フォーカス / 非フォーカス、押されているかどうかで 色を変更して描画します。
Void HandleContent(SFUGraphicsPtr graphic)
{
SFUColor color;
if (GetInheriteEnable()) {
if (GetInheriteFocus()) {
if (GetStatusPress()) {
color.Set(0x44, 0x44, 0x44);
}
else {
color.Set(0x66, 0x66, 0x66);
}
}
else {
color.Set(0x88, 0x88, 0x88);
}
}
else {
color.Set(0xAA, 0xAA, 0xAA);
}
graphic->DrawRect(GetVirtualWorld(), color);
return;
}
[ protected, virtual ] Void HandlePress(Void);
キーが押されたときに実行される関数です。 独自実装のボタンで、キーが押されたときに独自の処理を 行いたい場合は、この関数をオーバーライドします。
キーが押されたときに独自のイベントを送信します。
Void HandlePress(Void)
{
Invoke(SFUEvent(USEREVT_CONTROL, USERP16_CONTROL_PRESS, reinterpret_brew<UInt32>(this)));
return;
}
[ protected, virtual ] Void HandleRelease(Void);
キーが放されたときに実行される関数です。 独自実装のボタンで、キーが放されたときに独自の処理を 行いたい場合は、この関数をオーバーライドします。
キーが放されたときに独自のイベントを送信します。
Void HandleRelease(Void)
{
Invoke(SFUEvent(USEREVT_CONTROL, USERP16_CONTROL_RELEASE, reinterpret_brew<UInt32>(this)));
return;
}
[ protected, virtual ] Void InvalidateButton(Void);
ボタンの領域をアップデート領域として登録します。 独自にボタンコントロールを実装する場合などに、 ボタンの再描画が必要になったときこの関数を使用します。 この関数は、InvalidateVirtual() と同様の動作を 行います。ボタンの領域が仮想領域すべてではない場合などは、 この関数をオーバーライドしてください。
独自実装のボタンでタイトル文字列が変更されたときに、 アップデート領域を登録します。
if (param != _title) {
_title = param;
InvalidateButton();
}
独自実装のボタンでアップデート領域として登録しなければ ならない領域が、仮想領域すべてではない場合。
Void InvalidateButton(Void)
{
InvalidateVirtual(_updateArea);
}
[ public, virtual ] Void SetContentBound( ConstSFURectRef param // コンテント領域 );
コンテント領域をベース領域の座標で設定します。 SFRButtonBase を継承したクラスでは、この関数を 使用しても設定は無視されます。
[ public, virtual ] Void SetVirtualBound( ConstSFURectRef param // 仮想領域 );
仮想領域をコンテント領域の座標で設定します。 SFRButtonBase を継承したクラスでは、この関数を 使用しても設定は無視されます。
| Copyright(C) 2003-2004 Sophia Cradle Inc., All Rights Reserved. |
![]() ![]() ![]()
|