前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFYRadiobuttonControl
ラジオボタンコントロールを表す抽象クラスです。
#include <SFYRadiobuttonControl.h.hpp>
class SFYRadiobuttonControl : public SFYCheckboxControl;
SFMTYPEDEFRESPONDER(SFYRadiobuttonControl)

継承図

SFYRadiobuttonControl クラスの継承図

協調図

SFYRadiobuttonControl クラスの協調図

解説

■ 仕様と使い方

SFYRadiobuttonControl は、 各種ラジオボタンコントロールを実装するための起点となります。

SFYRadiobuttonControl は、 ラジオボタンと影の描画機能と排他的なチェック状態の切り替えを実装し、 いくつかの仮想関数のデフォルトの動作も実装します。

操作キーは、 SFYButtonControl::SetOperateKey 関数を使用して設定します。 デフォルトでは、セレクトキーが操作キーとして割り当てられています。

■ イベントとハンドラ

SFYRadiobuttonControl を継承するレスポンダでは、 SFYRadiobuttonControl::SFYRadiobuttonControl / SFYButtonControl::SFYButtonControl / SFYControl::SFYControl / SFYWidget::SFYWidget コンストラクタで登録されたハンドラの処理により、 下記のイベントを受信すると、対応する下記の仮想関数(ハンドラ)が最初に呼び出されます。 その後、開発者がレスポンダに登録したハンドラが呼び出されることになります。

[Note] 注意

ハンドラの詳細については、 SFYRadiobuttonControl::SFYRadiobuttonControl / SFYButtonControl::SFYButtonControl / SFYControl::SFYControl / SFYWidget::SFYWidget コンストラクタの解説を参照してください。

[Tip] Tip

ハンドラを登録する手間を省略できるので、 通常、これらのイベント処理は仮想関数をオーバーライドして記述します。

表 245. イベント、仮想関数(ハンドラ)とデフォルト動作

イベント 仮想関数(ハンドラ) デフォルトの動作 オーバーライド
SFYButtonControl::SetOperateKey で設定された操作キーの SFEVT_KEY イベント SFYButtonControl::HandleOperateKey 任意
SFYButtonControl::SetOperateKey で設定された操作キーの SFEVT_KEY_PRESS イベント SFYButtonControl::HandleOperateKeyPress 任意
SFYButtonControl::SetOperateKey で設定された操作キーの SFEVT_KEY_RELEASE イベント SFYRadiobuttonControl::HandleOperateKeyRelease 排他的なチェック状態切り替え結果イベントを送信する※1 任意
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベント SFYWidget::HandleBoundRequest 推奨
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE) イベント SFYWidget::HandleBoundOptimize 推奨
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベント SFYControl::HandleBoundReal 仮想領域を実領域に一致させる※2 任意
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL) イベント SFYWidget::HandleBoundVirtual 任意
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_GLOBAL) イベント SFYWidget::HandleBoundGlobal 非推奨[廃止予定]
(SFEVT_RESPONDER_RENDER, SFP16_RENDER_REQUEST) イベント SFYWidget::HandleRenderRequest 任意

※デフォルトの動作にある "−" は何も実装していないことを表す。

[Note] 注釈

※1. 排他的にチェック状態を切り替えた後、SFYResponder::InvokeForward(SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_OK, GetCurrentValue()), false) を実行します。

※2. SFYResponder::SetVirtualBound(SFXRectangle(SFXGrid::ZeroInstance(), GetRealBound().GetSize())) を実行します。つまり、仮想領域を実領域に一致させます。

ユーザー定義ラジオボタンコントロールを作成するときに最低限必要なコードを示します。

例 885. 宣言

SFMTYPEDEFRESPONDER(USRRadiobuttonControl)
class USRRadiobuttonControl : public SFYRadiobuttonControl {
    SFMSEALRESPONDER(USRRadiobuttonControl)
    SFMRESPONDERINSTANTIATESIX(USRRadiobuttonControl, SFYRadiobuttonControl, SFYCheckboxControl, SFYButtonControl, SFYControl, SFYWidget, SFYResponder)
public:

    // レスポンダのタイプを定義する
    // 小文字と記号のみからなるタイプは予約されているので使えない
    enum CodeEnum {
        CODE_TYPE = four_char_code('U', 'R', 'D', 'O')
    };
    SFMTYPEDEFTYPE(CodeEnum)

public:
    static USRRadiobuttonControlSmp NewInstance(SFCErrorPtr exception = null);
protected:
    explicit USRRadiobuttonControl(Void) static_throws;
    virtual ~USRRadiobuttonControl(Void);

    // 親クラスで定義されている仮想関数のうち、実装が推奨される仮想関数
    virtual Void HandleBoundRequest(SFXRectanglePtr rectangle) const;
    virtual Void HandleBoundOptimize(SFXRectanglePtr rectangle) const;
    virtual Void HandleBoundVirtual(Void);
    virtual Void HandleRenderRequest(SFXGraphicsPtr graphics) const;
};

例 886. 実装

USRRadiobuttonControl::USRRadiobuttonControl(Void) static_throws
{
    if (static_try()) {

        // レスポンダのタイプを設定する
        SetType(CODE_TYPE);

        // ラジオボタンコントロールのラベル部分は背景を持たないので透過モードに設定する
        SetPropertyTransparent(true);

        // 初期化処理を記述する
    }
}

USRRadiobuttonControl::~USRRadiobuttonControl(Void)
{
    // 終了処理を記述する
}

USRRadiobuttonControlSmp USRRadiobuttonControl::NewInstance(SFCErrorPtr exception)
{
    return static_pointer_cast<USRRadiobuttonControl>(Factory(::new USRRadiobuttonControl, exception));
}

Void USRRadiobuttonControl::HandleBoundRequest(SFXRectanglePtr rectangle) const
{
    // ラジオボタンコントロールに最適な大きさを計算して rectangle パラメータに設定する
    // この関数内では、rectangle の原点は変更せず、rectangle のサイズだけを設定する(推奨)

    return;
}

Void USRRadiobuttonControl::HandleBoundOptimize(SFXRectanglePtr rectangle) const
{
    // ラジオボタンコントロールに最適な大きさを rectangle パラメータ内の大きさに
    // 収まるように計算し、rectangle パラメータに設定する
    // この関数内では、rectangle の原点は変更せず、rectangle のサイズだけを設定する(推奨)

    return;
}

Void USRRadiobuttonControl::HandleBoundVirtual(Void)
{
    // 仮想領域が変更された場合に再計算が必要なものがあれば、ここに記述する
    return;
}

Void USRRadiobuttonControl::HandleRenderRequest(SFXGraphicsPtr graphics) const
{
    SFXGrid grid;

    // SFYRadiobuttonControl::DrawButton**/DrawShadow**/DrawCheckmark** 関数を使用して
    // ラジオボタンと影を描画する

    // _height 変数はラジオボタン部分の高さを表し、
    // _origin 変数はラジオボタン部分の原点を表すものとする
    // ※これらの変数は、ラベル部分に使用するフォントの高さより計算する

    if (_height >= 28) {
        grid.Set(DrawShadow28(graphics, _origin));
        DrawButton27(graphics, grid);
        grid.Add(8, 8);
        DrawCheckmark11(graphics, grid);
    }
    else if (_height >= 14) {
        grid.Set(DrawShadow14(graphics, _origin));
        DrawButton13(graphics, grid);
        grid.Add(4, 4);
        DrawCheckmark05(graphics, grid);
    }

    // ラジオボタンコントロールのラベル部分を描画する

    return;
}

参照

SFYRadiobuttonControl::SFYRadiobuttonControl | SFYButtonControl::SFYButtonControl | SFYControl::SFYControl | SFYWidget::SFYWidget | SFZRadiobuttonControl | キーイベント[SFEVT_KEY] | 領域イベント[SFEVT_RESPONDER_BOUND] | 描画イベント[SFEVT_RESPONDER_RENDER] | ラジオボタンコントロールを表す抽象クラス[SFYRadiobuttonControl]

メンバ

コンストラクタ/デストラクタ
SFYRadiobuttonControl( Void )
SFYRadiobuttonControl クラスのコンストラクタです。
~SFYRadiobuttonControl( Void )
SFYRadiobuttonControl クラスのデストラクタです。
パブリック関数
Void Group( SFYRadiobuttonControlSmpConstRef param )
ラジオボタンコントロールをグループに登録します。
Void Ungroup( Void )
ラジオボタンコントロールのグループ登録を解除します。
Void ClearHandler( Void ) (SFYResponder から継承)
このレスポンダのハンドラの登録をすべて解除します。
Void ClearTracer( Void ) (SFYResponder から継承)
このレスポンダのトレーサの配信規則の登録をすべて解除します。
SFCError Distribute( SFXEventConstRef event , BoolPtr result = null ) (SFYResponder から継承)
指定された配信型イベントを SFYDistributer インスタンスと、このレスポンダ以下のレスポンダツリーに配信します。
SFXRGBColorConstRef GetBackgroundColor( Void ) (SFYWidget から継承)
背景の色を取得します。
SFXBevelColorConstRef GetButtonColor( Void ) (SFYButtonControl から継承)
ボタンコントロール内ベベル領域を描画するベベルカラーを取得します。
SFXRGBColorConstRef GetCheckmarkColor( Void ) (SFYCheckboxControl から継承)
チェックマークの色を取得します。
SFYResponderSmp GetChildBack( Void ) (SFYResponder から継承)
最背面に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildBack( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
最背面に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildBack( UInt32 id ) (SFYResponder から継承)
最背面に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildBack( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
最背面に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildBackward( SInt32 index ) (SFYResponder から継承)
背面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildBackward( SInt32 index , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
背面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildBackward( SInt32 index , UInt32 id ) (SFYResponder から継承)
背面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildBackward( SInt32 index , UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
背面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SInt32 GetChildCount( Void ) (SFYResponder から継承)
このレスポンダの子レスポンダの数を取得します。
SInt32 GetChildCount( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダの子レスポンダの数を取得します。
SInt32 GetChildCount( UInt32 id ) (SFYResponder から継承)
このレスポンダの子レスポンダの数を取得します。
SInt32 GetChildCount( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダの子レスポンダの数を取得します。
SFYResponderSmp GetChildForward( SInt32 index ) (SFYResponder から継承)
前面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildForward( SInt32 index , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
前面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildForward( SInt32 index , UInt32 id ) (SFYResponder から継承)
前面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildForward( SInt32 index , UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
前面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildFront( Void ) (SFYResponder から継承)
最前面に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildFront( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
最前面に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildFront( UInt32 id ) (SFYResponder から継承)
最前面に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildFront( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
最前面に位置するこのレスポンダの子レスポンダを取得します。
SInt32 GetCurrentValue( Void ) (SFYControl から継承)
コントロールの現在値を取得します。
SFYDistributerPtr GetDistributer( Void ) (SFYResponder から継承)
このレスポンダに設定されている配信エンジンを取得します。
SFXBevelColorConstRef GetFocusColor( Void ) (SFYButtonControl から継承)
フォーカス状態にあるときのボタンコントロール内ベベル領域の枠を描画するベベルカラーを取得します。
SFYResponderSmp GetFrame( Void ) (SFYResponder から継承)
このレスポンダに装着されたフレームを取得します。
SFXRectangle GetGlobalBound( Void ) (SFYResponder から継承)
このレスポンダのグローバル領域を取得します。
UInt32 GetID( Void ) (SFYResponder から継承)
このレスポンダの ID を取得します。
SFXRectangle GetLocalBound( Void ) (SFYResponder から継承)
このレスポンダのローカル領域を取得します。
SInt32 GetMaximumValue( Void ) (SFYControl から継承)
コントロールの最大値を取得します。
SInt32 GetMinimumValue( Void ) (SFYControl から継承)
コントロールの最小値を取得します。
SInt32 GetNthBackward( Void ) (SFYResponder から継承)
このレスポンダが背面から数えて何番目に位置するかを取得します。
SInt32 GetNthBackward( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが背面から数えて何番目に位置するかを取得します。
SInt32 GetNthBackward( UInt32 id ) (SFYResponder から継承)
このレスポンダが背面から数えて何番目に位置するかを取得します。
SInt32 GetNthBackward( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが背面から数えて何番目に位置するかを取得します。
SInt32 GetNthForward( Void ) (SFYResponder から継承)
このレスポンダが前面から数えて何番目に位置するかを取得します。
SInt32 GetNthForward( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが前面から数えて何番目に位置するかを取得します。
SInt32 GetNthForward( UInt32 id ) (SFYResponder から継承)
このレスポンダが前面から数えて何番目に位置するかを取得します。
SInt32 GetNthForward( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが前面から数えて何番目に位置するかを取得します。
AVKType GetOperateKey( Void ) (SFYButtonControl から継承)
ボタンの操作キーを取得します。
SFYResponderSmp GetParent( Void ) (SFYResponder から継承)
このレスポンダの親レスポンダを取得します。
Bool GetPropertyTransparent( Void ) (SFYResponder から継承)
このレスポンダの透過属性を取得します。
SFXRectangleConstRef GetRealBound( Void ) (SFYResponder から継承)
このレスポンダの実領域を取得します。
VoidPtr GetReference( Void ) (SFYResponder から継承)
このレスポンダのリファレンス値を取得します。
SFYRendererPtr GetRenderer( Void ) (SFYResponder から継承)
このレスポンダに設定されている描画エンジンを取得します。
SFYResponderSmp GetRoot( Void ) (SFYResponder から継承)
このレスポンダが所属するレスポンダツリーのルートレスポンダを取得します。
SFXRGBColorConstRef GetShadowColor( Void ) (SFYButtonControl から継承)
影の色を取得します。
Bool GetStateActive( Bool inherit = false ) (SFYResponder から継承)
このレスポンダの活性状態を取得します。
Bool GetStateEnable( Bool inherit = false ) (SFYResponder から継承)
このレスポンダの操作可能状態を取得します。
Bool GetStateFocus( Bool inherit = false ) (SFYResponder から継承)
このレスポンダのフォーカス状態を取得します。
Bool GetStatePress( Void ) (SFYButtonControl から継承)
ボタンコントロールの押下状態を取得します。
Bool GetStateValid( Bool inherit = false ) (SFYResponder から継承)
このレスポンダの有効状態を取得します。
Bool GetStateVisible( Bool inherit = false ) (SFYResponder から継承)
このレスポンダの可視状態を取得します。
SFXRectangle GetSuitableBound( Void ) (SFYResponder から継承)
このレスポンダの最適な領域(サイズ)を取得します。
SFXRectangle GetSuitableBound( SFXRectangleConstRef rectangle ) (SFYResponder から継承)
このレスポンダの最適な領域(サイズ)を取得します。
SFXRectangle GetSuitableBound( SFXRectangleConstRef param , HorizontalEnum horizontal , VerticalEnum vertical ) (SFYResponder から継承)
このレスポンダの最適な領域(サイズ)を取得します。
SFXMargin GetSuitableMargin( Void ) (SFYResponder から継承)
このレスポンダのフレーム余白領域を取得します。
SFCType GetType( Void ) (SFYResponder から継承)
このレスポンダのタイプを取得します。
SFXRectangleConstRef GetVirtualBound( Void ) (SFYResponder から継承)
このレスポンダの仮想領域を取得します。
Bool HasFrame( Void ) (SFYResponder から継承)
このレスポンダがコンテントレスポンダであるかどうかを判定します。
Void Initialize( Void ) (SFYResponder から継承)
このレスポンダを初期化します。
Void Invalidate( Void ) (SFYResponder から継承)
指定された領域を再描画領域に登録します。
Void Invalidate( SFXRectangleConstRef param ) (SFYResponder から継承)
指定された領域を再描画領域に登録します。
Void InvokeBackward( SFXEventConstRef event , Bool overload , BoolPtr result = null ) (SFYResponder から継承)
指定されたコールバック型イベントをこのレスポンダに送信します (ハンドラは登録順に起動されます)。
Void InvokeForward( SFXEventConstRef event , Bool overload , BoolPtr result = null ) (SFYResponder から継承)
指定されたコールバック型イベントをこのレスポンダに送信します (ハンドラは登録の逆順に起動されます)。
Bool IsBack( Void ) (SFYResponder から継承)
このレスポンダが最背面に位置するかどうかを判定します。
Bool IsBack( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが最背面に位置するかどうかを判定します。
Bool IsBack( UInt32 id ) (SFYResponder から継承)
このレスポンダが最背面に位置するかどうかを判定します。
Bool IsBack( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが最背面に位置するかどうかを判定します。
Bool IsFrame( Void ) (SFYResponder から継承)
このレスポンダがアタッチメントフレームであるかどうかを判定します。
Bool IsFront( Void ) (SFYResponder から継承)
このレスポンダが最前面に位置するかどうかを判定します。
Bool IsFront( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが最前面に位置するかどうかを判定します。
Bool IsFront( UInt32 id ) (SFYResponder から継承)
このレスポンダが最前面に位置するかどうかを判定します。
Bool IsFront( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが最前面に位置するかどうかを判定します。
Bool IsNthBackward( SInt32 index ) (SFYResponder から継承)
このレスポンダが背面から数えて指定された順番に位置するかどうかを判定します。
Bool IsNthBackward( SInt32 index , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが背面から数えて指定された順番に位置するかどうかを判定します。
Bool IsNthBackward( SInt32 index , UInt32 id ) (SFYResponder から継承)
このレスポンダが背面から数えて指定された順番に位置するかどうかを判定します。
Bool IsNthBackward( SInt32 index , UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが背面から数えて指定された順番に位置するかどうかを判定します。
Bool IsNthForward( SInt32 index ) (SFYResponder から継承)
このレスポンダが前面から数えて指定された順番に位置するかどうかを判定します。
Bool IsNthForward( SInt32 index , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが前面から数えて指定された順番に位置するかどうかを判定します。
Bool IsNthForward( SInt32 index , UInt32 id ) (SFYResponder から継承)
このレスポンダが前面から数えて指定された順番に位置するかどうかを判定します。
Bool IsNthForward( SInt32 index , UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが前面から数えて指定された順番に位置するかどうかを判定します。
Bool IsRoot( Void ) (SFYResponder から継承)
このレスポンダがルートレスポンダであるかどうかを判定します。
SFCError Recover( Void ) (SFYResponder から継承)
デバイス画面保存用ビットマップを使用してこのレスポンダとレスポンダ空間との交差領域を復元します。
SFCError RegisterHandler( SFXEventRangeConstRef range , SFYHandler::RuleRecConstRef rule ) (SFYResponder から継承)
指定されたハンドラをこのレスポンダに登録します。
SFCError RegisterHandler( SFXEventRangeConstRef range , SFYHandler::HandlerSPP spp , VoidPtr reference ) (SFYResponder から継承)
指定されたハンドラをこのレスポンダに登録します。
SFCError RegisterHandler( SFXEventRangeConstPtr range , SFYHandler::RuleRecConstPtr rule , SInt32 length ) (SFYResponder から継承)
指定されたハンドラをこのレスポンダに登録します。
SFCError RegisterHandler( SFXEventRangeConstPtr range , SFYHandler::HandlerSPPConstPtr spp , VoidPtrConstPtr reference , SInt32 length ) (SFYResponder から継承)
指定されたハンドラをこのレスポンダに登録します。
SFCError RegisterTracer( SFXEventRangeConstRef range , SFYTracer::RuleRecConstRef rule ) (SFYResponder から継承)
指定された配信規則をこのレスポンダのトレーサに登録します。
SFCError RegisterTracer( SFXEventRangeConstRef range , SFYTracer::OrderEnum order , SFYTracer::StateEnum state , Bool overload ) (SFYResponder から継承)
指定された配信規則をこのレスポンダのトレーサに登録します。
SFCError RegisterTracer( SFXEventRangeConstPtr range , SFYTracer::RuleRecConstPtr rule , SInt32 length ) (SFYResponder から継承)
指定された配信規則をこのレスポンダのトレーサに登録します。
SFCError RegisterTracer( SFXEventRangeConstPtr range , SFYTracer::OrderEnumConstPtr order , SFYTracer::StateEnumConstPtr state , BoolConstPtr overload , SInt32 length ) (SFYResponder から継承)
指定された配信規則をこのレスポンダのトレーサに登録します。
SFCError Render( Bool force = false ) (SFYResponder から継承)
このレスポンダ以下のレスポンダツリーをレスポンダ空間に再描画します。
Void SetBackgroundColor( SFXRGBColorConstRef param ) (SFYWidget から継承)
背景の色を設定します。
Void SetButtonColor( SFXBevelColorConstRef param ) (SFYButtonControl から継承)
ボタンコントロール内ベベル領域を描画するベベルカラーを設定します。
Void SetCheckmarkColor( SFXRGBColorConstRef param ) (SFYCheckboxControl から継承)
チェックマークの色を設定します。
Void SetCurrentValue( SInt32 param ) (SFYControl から継承)
コントロールの現在値を設定します。
Void SetDistributer( SFYDistributerPtr param ) (SFYResponder から継承)
指定された配信エンジンをこのレスポンダに設定します。
Void SetFocusColor( SFXBevelColorConstRef param ) (SFYButtonControl から継承)
フォーカス状態にあるときのボタンコントロール内ベベル領域の枠を描画するベベルカラーを設定します。
SFCError SetFrame( SFYResponderSmpConstRef param ) (SFYResponder から継承)
このレスポンダにフレームを装着します。
Void SetID( UInt32 param ) (SFYResponder から継承)
指定された ID をこのレスポンダに設定します。
Void SetMaximumValue( SInt32 param ) (SFYControl から継承)
コントロールの最大値を設定します。
Void SetMinimumValue( SInt32 param ) (SFYControl から継承)
コントロールの最小値を設定します。
Void SetOperateKey( AVKType param ) (SFYButtonControl から継承)
操作キーを設定します。
SFCError SetParent( SFYResponderSmpConstRef param ) (SFYResponder から継承)
指定されたレスポンダをこのレスポンダの親レスポンダに設定します。
Void SetProperty( Bool transparent ) (SFYResponder から継承)
指定された属性をこのレスポンダに設定します。
Void SetPropertyTransparent( Bool param ) (SFYResponder から継承)
指定された透過属性をこのレスポンダに設定します。
Void SetRealBound( SFXRectangleConstRef param ) (SFYResponder から継承)
指定された領域をこのレスポンダの実領域に設定します。
Void SetReference( VoidPtr param ) (SFYResponder から継承)
指定された値をこのレスポンダのリファレンスに設定します。
Void SetRenderer( SFYRendererPtr param ) (SFYResponder から継承)
指定された描画エンジンをこのレスポンダに設定します。
Void SetShadowColor( SFXRGBColorConstRef param ) (SFYButtonControl から継承)
影の色を設定します。
Void SetState( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
指定された値をこのレスポンダの可視、活性、操作可能、フォーカスの各状態フラグに設定します。
Void SetStateActive( Bool param ) (SFYResponder から継承)
指定された値をこのレスポンダの活性状態フラグに設定します。
Void SetStateEnable( Bool param ) (SFYResponder から継承)
指定された値をこのレスポンダの操作可能状態フラグに設定します。
Void SetStateFocus( Bool param ) (SFYResponder から継承)
指定された値をこのレスポンダのフォーカス状態フラグに設定します。
Void SetStatePress( Bool param ) (SFYButtonControl から継承)
ボタンコントロールの押下状態を設定します。
Void SetStateVisible( Bool param ) (SFYResponder から継承)
指定された値をこのレスポンダの可視状態フラグに設定します。
Void SetVirtualBound( SFXRectangleConstRef param ) (SFYResponder から継承)
指定された領域をこのレスポンダの仮想領域に設定します。
SFCError Snapshot( SFBBitmapSmpConstRef bitmap ) (SFYResponder から継承)
デバイス画面保存用ビットマップからこのレスポンダとレスポンダ空間との交差領域のスナップショットを取得します。
Void Terminate( Void ) (SFYResponder から継承)
このレスポンダの終了処理を行います。
Void ToBack( Void ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最背面に移動します。
Void ToBack( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最背面に移動します。
Void ToBack( UInt32 id ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最背面に移動します。
Void ToBack( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最背面に移動します。
Void ToFront( Void ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最前面に移動します。
Void ToFront( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最前面に移動します。
Void ToFront( UInt32 id ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最前面に移動します。
Void ToFront( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最前面に移動します。
Void ToNthBackward( SInt32 index ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで背面から数えて指定された位置に移動します。
Void ToNthBackward( SInt32 index , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで背面から数えて指定された位置に移動します。
Void ToNthBackward( SInt32 index , UInt32 id ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで背面から数えて指定された位置に移動します。
Void ToNthBackward( SInt32 index , UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで背面から数えて指定された位置に移動します。
Void ToNthForward( SInt32 index ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで前面から数えて指定された位置に移動します。
Void ToNthForward( SInt32 index , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで前面から数えて指定された位置に移動します。
Void ToNthForward( SInt32 index , UInt32 id ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで前面から数えて指定された位置に移動します。
Void ToNthForward( SInt32 index , UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで前面から数えて指定された位置に移動します。
Void UnregisterHandler( SFXEventRangeConstRef range , SFYHandler::RuleRecConstRef rule ) (SFYResponder から継承)
このレスポンダから指定されたハンドラの登録を解除します。
Void UnregisterHandler( SFXEventRangeConstRef range , SFYHandler::HandlerSPP spp , VoidPtr reference ) (SFYResponder から継承)
このレスポンダから指定されたハンドラの登録を解除します。
Void UnregisterHandler( SFXEventRangeConstPtr range , SFYHandler::RuleRecConstPtr rule , SInt32 length ) (SFYResponder から継承)
このレスポンダから指定されたハンドラの登録を解除します。
Void UnregisterHandler( SFXEventRangeConstPtr range , SFYHandler::HandlerSPPConstPtr spp , VoidPtrConstPtr reference , SInt32 length ) (SFYResponder から継承)
このレスポンダから指定されたハンドラの登録を解除します。
Void UnregisterTracer( SFXEventRangeConstRef range ) (SFYResponder から継承)
このレスポンダのトレーサから指定された配信規則の登録を解除します。
Void UnregisterTracer( SFXEventRangeConstPtr range , SInt32 length ) (SFYResponder から継承)
このレスポンダのトレーサから指定された配信規則の登録を解除します。
プロテクト関数
Void DrawButton13( SFXGraphicsPtr graphics , SFXGridConstRef grid )
ラジオボタン用 13 × 13 ピクセルのボタンを描画します。
Void DrawButton27( SFXGraphicsPtr graphics , SFXGridConstRef grid )
ラジオボタン用 27 × 27 ピクセルのボタンを描画します。
Void DrawCheckmark05( SFXGraphicsPtr graphics , SFXGridConstRef grid )
ラジオボタン用 5 × 5 ピクセルのチェックマークを描画します。
Void DrawCheckmark11( SFXGraphicsPtr graphics , SFXGridConstRef grid )
ラジオボタン用 11 × 11 ピクセルのチェックマークを描画します。
SFXGrid DrawShadow14( SFXGraphicsPtr graphics , SFXGridConstRef grid )
ラジオボタン用 14 × 14 ピクセルの影を描画します。
SFXGrid DrawShadow28( SFXGraphicsPtr graphics , SFXGridConstRef grid )
ラジオボタン用 28 × 28 ピクセルの影を描画します。
Void HandleOperateKeyRelease( Void )
操作キーの SFEVT_KEY_RELEASE イベントを受信したときに呼び出される関数です。
Void DrawButton( SFXGraphicsPtr graphics , SFXRectangleConstRef rectangle ) (SFYButtonControl から継承)
ボタンコントロールのベベル領域を描画します。
Void DrawCheckmark09( SFXGraphicsPtr graphics , SFXGridConstRef grid ) (SFYCheckboxControl から継承)
チェックボックス用 9 × 9 ピクセルのチェックマークを描画します。
Void DrawCheckmark21( SFXGraphicsPtr graphics , SFXGridConstRef grid ) (SFYCheckboxControl から継承)
チェックボックス用 21 × 21 ピクセルのチェックマークを描画します。
SFXRectangle DrawShadow( SFXGraphicsPtr graphics , SFXRectangleConstRef rectangle ) (SFYButtonControl から継承)
ボタンコントロールの影領域を描画します。
static
SFYResponderSmp
Factory( SFYResponderPtr responder , SFCErrorPtr exception = null ) (SFYResponder から継承)
NewInstance 関数の実装を補助します。
static
SFXMarginConstRef
GetButtonMargin( Void ) (SFYButtonControl から継承)
ボタンコントロールのマージンを取得します。
static
SFXGridConstRef
GetPressOffset( Void ) (SFYButtonControl から継承)
プレスオフセットを取得します。
static
SFXMarginConstRef
GetShadowMargin( Void ) (SFYButtonControl から継承)
ボタンコントロールの影領域のマージンを取得します。
SFYResponderSmp GetThis( Void ) (SFYResponder から継承)
このレスポンダのスマートポインタを取得します。
Void HandleBoundGlobal( SFXRectangleConstRef rectangle ) (SFYWidget から継承)
[非推奨(廃止予定 API)] グローバル領域が変化したときに呼び出される関数です。
Void HandleBoundOptimize( SFXRectanglePtr rectangle ) (SFYWidget から継承)
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE) イベントを受信したときに呼び出される関数です(指定した矩形に収まる範囲内で最適な領域を計算します)。
Void HandleBoundReal( Void ) (SFYControl から継承)
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベントを受信したときに呼び出される関数です (実領域が変化したときの処理を行います)。
Void HandleBoundRequest( SFXRectanglePtr rectangle ) (SFYWidget から継承)
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベントを受信したときに呼び出される関数です(最適な領域を計算します)。
Void HandleBoundVirtual( Void ) (SFYWidget から継承)
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL) イベントを受信したときに呼び出される関数です (仮想領域が変化したときの処理を行います)。
Void HandleOperateKey( Void ) (SFYButtonControl から継承)
キーイベントを処理します。
Void HandleOperateKeyPress( Void ) (SFYButtonControl から継承)
操作キーの SFEVT_KEY_PRESS イベントを受信したときに呼び出される関数です。
Void HandleRenderRequest( SFXGraphicsPtr graphics ) (SFYWidget から継承)
描画イベントを受信したときに呼び出される関数です(レスポンダを描画します)。
Void SetType( SFCType param ) (SFYResponder から継承)
指定された値をこのレスポンダのタイプに設定します。
CodeEnum
SFYRadiobuttonControl クラスを表す定数です。
HorizontalEnum (SFYResponder から継承)
水平方向のアライメントを表す定数です。
VerticalEnum (SFYResponder から継承)
垂直方向のアライメントを表す定数です。

SFYRadiobuttonControl::SFYRadiobuttonControl
SFYRadiobuttonControl クラスのコンストラクタです。
[ protected, explicit ]
SFYRadiobuttonControl(Void);

解説

このレスポンダのタイプを ".rdo" に設定します。

内部実装

このコンストラクタの内部実装は以下の通りです。

/*protected */SFYRadiobuttonControl::SFYRadiobuttonControl(Void) static_throws
{
    _forward = this;
    _backward = this;
    if (static_try()) {
        SetType(CODE_TYPE);
    }
}// SFYRadiobuttonControl::SFYRadiobuttonControl //

参照

SFYResponder::SetType | SFYRadiobuttonControl::CodeEnum | タイプ


SFYRadiobuttonControl::~SFYRadiobuttonControl
SFYRadiobuttonControl クラスのデストラクタです。
[ protected, virtual ]
virtual ~SFYRadiobuttonControl(Void);

解説

このラジオボタンコントロールのグループ登録を解除します。

内部実装

このデストラクタの内部実装は以下の通りです。

/*protected virtual */SFYRadiobuttonControl::~SFYRadiobuttonControl(Void)
{
    Ungroup();
}// SFYRadiobuttonControl::~SFYRadiobuttonControl //

参照

SFYRadiobuttonControl::Ungroup


SFYRadiobuttonControl::DrawButton13
ラジオボタン用 13 × 13 ピクセルのボタンを描画します。
[ protected, const ]
Void DrawButton13(
    SFXGraphicsPtr graphics   // グラフィックスオブジェクト
    SFXGridConstRef grid      // 左上の座標
);

解説

この関数は、ラジオボタン用 13 × 13 ピクセルのボタンを描画します。

独自の処理を行う場合は、この関数をオーバーライドします。

[Tip] Tip
この関数は、SFZRadiobuttonControl::HandleRenderRequest 関数内で呼び出されます。

内部実装

この関数の内部実装は以下の通りです。

/*protected */Void SFYRadiobuttonControl::DrawButton13(SFXGraphicsPtr graphics, SFXGridConstRef grid) const
{
    static SFXRectangle::AtomRecConst           rectangle[] = {
        {{ 3,  3}, { 7,  7}}
    };
    static SFXLine::AtomRecConst                line[] = {
        {{ 2,  1}, { 3,  1}}, {{ 4,  0}, { 8,  0}}, {{ 1,  2}, { 1,  3}}, {{ 0,  4}, { 0,  8}},
        {{ 9,  1}, {10,  1}}, {{ 1,  9}, { 1, 10}}, {{ 2,  2}, { 4,  2}}, {{ 4,  1}, { 8,  1}},
        {{ 8,  2}, {10,  2}}, {{10,  2}, {10,  4}}, {{11,  4}, {11,  8}}, {{10,  8}, {10, 10}},
        {{ 2,  2}, { 2,  4}}, {{ 1,  4}, { 1,  8}}, {{ 2,  8}, { 2, 10}}, {{ 2, 10}, { 4, 10}},
        {{ 4, 11}, { 8, 11}}, {{ 8, 10}, {10, 10}}, {{11,  2}, {11,  3}}, {{ 2, 11}, { 3, 11}},
        {{12,  4}, {12,  8}}, {{11,  9}, {11, 10}}, {{ 4, 12}, { 8, 12}}, {{ 9, 11}, {10, 11}},
        {{ 5,  2}, { 7,  2}}, {{10,  5}, {10,  7}}, {{ 2,  5}, { 2,  7}}, {{ 5, 10}, { 7, 10}}
    };
    static SInt16Const                          color[] = {
        0,  0,  4,  6, 18, 20, 24
    };

    RenderButton(graphics, grid, atomic_cast(rectangle), lengthof(rectangle), atomic_cast(line), lengthof(line), color);
    return;
}// SFYRadiobuttonControl::DrawButton13 //

/*private */Void SFYRadiobuttonControl::RenderButton(SFXGraphicsPtr graphics, SFXGridConstRef grid, SFXRectangleConstPtr rectangle, SInt32 rlength, SFXLineConstPtr line, SInt32 llength, SInt16Const color[7]) const
{
    SFXBevelColor                               bevel;
    SFXRGBColor                                 rgb;
    SInt32                                      r0;
    Bool                                        baseBright;

    graphics->SetTranslate(-grid);
    bevel.Set((GetStateFocus(true)) ? (GetFocusColor()) : (GetButtonColor()));
    rgb.Set(GetButtonColor().GetBase());
    baseBright = rgb.GetBrightness() > 0x7F;
    if (!GetStateActive(true)) {
        bevel.SetLight(bevel.GetBase());
        bevel.SetDark(bevel.GetBase());
    }
    if (GetStatePress()) {
        if (baseBright) {
            bevel.SubRGB(0x11);
            rgb.SubRGB(0x11);
        }
        else {
            bevel.AddRGB(0x11);
            rgb.AddRGB(0x11);
        }
    }
    graphics->SetFillMode(true);
    for (r0 = 0; r0 < rlength; ++r0) {
        if (r0 == color[0]) {
            graphics->SetForeColor(rgb);
            graphics->SetFillColor(rgb);
        }
        graphics->DrawRectangle(rectangle[r0]);
    }
    for (r0 = 0; r0 < llength; ++r0) {
        if (r0 == color[1]) {
            graphics->SetForeColor(bevel.GetLight());
        }
        else if (r0 == color[2]) {
            SFXRGBColor light(bevel.GetLight());
            graphics->SetForeColor(
                (baseBright) ? light.SubRGB(0x11) : light.AddRGB(0x11)
            );
        }
        else if (r0 == color[3]) {
            graphics->SetForeColor(bevel.GetBase());
        }
        else if (r0 == color[4]) {
            SFXRGBColor dark(bevel.GetDark());
            graphics->SetForeColor(
                (baseBright) ? dark.AddRGB(0x11) : dark.SubRGB(0x11)
            );
        }
        else if (r0 == color[5]) {
            graphics->SetForeColor(bevel.GetDark());
        }
        else if (r0 == color[6]) {
            graphics->SetForeColor(rgb);
        }
        graphics->DrawLine(line[r0]);
    }
    graphics->SetTranslate(grid);
    return;
}// SFYRadiobuttonControl::RenderButton //

参照

SFZRadiobuttonControl::HandleRenderRequest


SFYRadiobuttonControl::DrawButton27
ラジオボタン用 27 × 27 ピクセルのボタンを描画します。
[ protected, const ]
Void DrawButton27(
    SFXGraphicsPtr graphics   // グラフィックスオブジェクト
    SFXGridConstRef grid      // 左上の座標
);

解説

この関数は、ラジオボタン用 27 × 27 ピクセルのボタンを描画します。

独自の処理を行う場合は、この関数をオーバーライドします。

[Tip] Tip
この関数は、SFZRadiobuttonControl::HandleRenderRequest 関数内で呼び出されます。

内部実装

この関数の内部実装は以下の通りです。

/*protected */Void SFYRadiobuttonControl::DrawButton27(SFXGraphicsPtr graphics, SFXGridConstRef grid) const
{
    static SFXRectangle::AtomRecConst           rectangle[] = {
        {{ 5,  5}, {17, 17}}
    };
    static SFXLine::AtomRecConst                line[] = {
        {{ 4,  3}, { 5,  3}}, {{ 6,  2}, { 6,  2}}, {{ 7,  1}, { 9,  1}}, {{10,  0}, {16,  0}},
        {{ 3,  4}, { 3,  5}}, {{ 2,  6}, { 2,  6}}, {{ 1,  7}, { 1,  9}}, {{ 0, 10}, { 0, 16}},
        {{17,  1}, {19,  1}}, {{20,  2}, {20,  2}}, {{21,  3}, {22,  3}}, {{ 1, 17}, { 1, 19}},
        {{ 2, 20}, { 2, 20}}, {{ 3, 21}, { 3, 22}}, {{ 4,  4}, { 6,  4}}, {{ 6,  3}, { 7,  3}},
        {{ 7,  2}, {10,  2}}, {{10,  1}, {16,  1}}, {{16,  2}, {19,  2}}, {{19,  3}, {20,  3}},
        {{20,  4}, {22,  4}}, {{22,  4}, {22,  6}}, {{23,  6}, {23,  7}}, {{24,  7}, {24, 10}},
        {{25, 10}, {25, 16}}, {{24, 16}, {24, 19}}, {{23, 19}, {23, 20}}, {{22, 20}, {22, 22}},
        {{ 4,  4}, { 4,  6}}, {{ 3,  6}, { 3,  7}}, {{ 2,  7}, { 2, 10}}, {{ 1, 10}, { 1, 16}},
        {{ 2, 16}, { 2, 19}}, {{ 3, 19}, { 3, 20}}, {{ 4, 20}, { 4, 22}}, {{ 4, 22}, { 6, 22}},
        {{ 6, 23}, { 7, 23}}, {{ 7, 24}, {10, 24}}, {{10, 25}, {16, 25}}, {{16, 24}, {19, 24}},
        {{19, 23}, {20, 23}}, {{20, 22}, {22, 22}}, {{23,  4}, {23,  5}}, {{24,  6}, {24,  6}},
        {{25,  7}, {25,  9}}, {{ 4, 23}, { 5, 23}}, {{ 6, 24}, { 6, 24}}, {{ 7, 25}, { 9, 25}},
        {{26, 10}, {26, 16}}, {{25, 17}, {25, 19}}, {{24, 20}, {24, 20}}, {{23, 21}, {23, 22}},
        {{10, 26}, {16, 26}}, {{17, 25}, {19, 25}}, {{20, 24}, {20, 24}}, {{21, 23}, {22, 23}},
        {{11,  2}, {15,  2}}, {{ 8,  3}, {18,  3}}, {{ 7,  4}, {19,  4}}, {{24, 11}, {24, 15}},
        {{23,  8}, {23, 18}}, {{22,  7}, {22, 19}}, {{ 2, 11}, { 2, 15}}, {{ 3,  8}, { 3, 18}},
        {{ 4,  7}, { 4, 19}}, {{11, 24}, {15, 24}}, {{ 8, 23}, {18, 23}}, {{ 7, 22}, {19, 22}}
    };
    static SInt16Const                          color[] = {
        0,  0,  8, 14, 42, 48, 56
    };

    RenderButton(graphics, grid, atomic_cast(rectangle), lengthof(rectangle), atomic_cast(line), lengthof(line), color);
    return;
}// SFYRadiobuttonControl::DrawButton27 //

/*private */Void SFYRadiobuttonControl::RenderButton(SFXGraphicsPtr graphics, SFXGridConstRef grid, SFXRectangleConstPtr rectangle, SInt32 rlength, SFXLineConstPtr line, SInt32 llength, SInt16Const color[7]) const
{
    SFXBevelColor                               bevel;
    SFXRGBColor                                 rgb;
    SInt32                                      r0;
    Bool                                        baseBright;

    graphics->SetTranslate(-grid);
    bevel.Set((GetStateFocus(true)) ? (GetFocusColor()) : (GetButtonColor()));
    rgb.Set(GetButtonColor().GetBase());
    baseBright = rgb.GetBrightness() > 0x7F;
    if (!GetStateActive(true)) {
        bevel.SetLight(bevel.GetBase());
        bevel.SetDark(bevel.GetBase());
    }
    if (GetStatePress()) {
        if (baseBright) {
            bevel.SubRGB(0x11);
            rgb.SubRGB(0x11);
        }
        else {
            bevel.AddRGB(0x11);
            rgb.AddRGB(0x11);
        }
    }
    graphics->SetFillMode(true);
    for (r0 = 0; r0 < rlength; ++r0) {
        if (r0 == color[0]) {
            graphics->SetForeColor(rgb);
            graphics->SetFillColor(rgb);
        }
        graphics->DrawRectangle(rectangle[r0]);
    }
    for (r0 = 0; r0 < llength; ++r0) {
        if (r0 == color[1]) {
            graphics->SetForeColor(bevel.GetLight());
        }
        else if (r0 == color[2]) {
            SFXRGBColor light(bevel.GetLight());
            graphics->SetForeColor(
                (baseBright) ? light.SubRGB(0x11) : light.AddRGB(0x11)
            );
        }
        else if (r0 == color[3]) {
            graphics->SetForeColor(bevel.GetBase());
        }
        else if (r0 == color[4]) {
            SFXRGBColor dark(bevel.GetDark());
            graphics->SetForeColor(
                (baseBright) ? dark.AddRGB(0x11) : dark.SubRGB(0x11)
            );
        }
        else if (r0 == color[5]) {
            graphics->SetForeColor(bevel.GetDark());
        }
        else if (r0 == color[6]) {
            graphics->SetForeColor(rgb);
        }
        graphics->DrawLine(line[r0]);
    }
    graphics->SetTranslate(grid);
    return;
}// SFYRadiobuttonControl::RenderButton //

参照

SFZRadiobuttonControl::HandleRenderRequest


SFYRadiobuttonControl::DrawCheckmark05
ラジオボタン用 5 × 5 ピクセルのチェックマークを描画します。
[ protected, const ]
Void DrawCheckmark05(
    SFXGraphicsPtr graphics   // グラフィックスオブジェクト
    SFXGridConstRef grid      // 左上の座標
);

解説

この関数は、ラジオボタン用 5 × 5 ピクセルのチェックマークを描画します。

独自の処理を行う場合は、この関数をオーバーライドします。

[Tip] Tip
この関数は、SFZRadiobuttonControl::HandleRenderRequest 関数内で呼び出されます。

内部実装

この関数の内部実装は以下の通りです。

/*protected */Void SFYRadiobuttonControl::DrawCheckmark05(SFXGraphicsPtr graphics, SFXGridConstRef grid) const
{
    static SFXRectangle::AtomRecConst           rectangle[] = {
        {{ 1,  1}, { 3,  3}}
    };
    static SFXLine::AtomRecConst                line[] = {
        {{ 1,  0}, { 3,  0}}, {{ 4,  1}, { 4,  3}}, {{ 0,  1}, { 0,  3}}, {{ 1,  4}, { 3,  4}}
    };

    RenderCheckmark(graphics, grid, atomic_cast(rectangle), lengthof(rectangle), atomic_cast(line), lengthof(line));
    return;
}// SFYRadiobuttonControl::DrawCheckmark05 //

/*private */Void SFYRadiobuttonControl::RenderCheckmark(SFXGraphicsPtr graphics, SFXGridConstRef grid, SFXRectangleConstPtr rectangle, SInt32 rlength, SFXLineConstPtr line, SInt32 llength) const
{
    SFXRGBColor                                 rgb;
    SInt32                                      r0;

    if (GetCurrentValue()) {
        graphics->SetTranslate(-grid);
        rgb.Set(GetCheckmarkColor());
        if (!GetStateActive(true)) {
            (rgb.GetBrightness() > 0x7F) ? rgb.SubRGB(0x44) : rgb.AddRGB(0x44);
        }
        graphics->SetFillMode(true);
        graphics->SetForeColor(rgb);
        graphics->SetFillColor(rgb);
        for (r0 = 0; r0 < rlength; ++r0) {
            graphics->DrawRectangle(rectangle[r0]);
        }
        for (r0 = 0; r0 < llength; ++r0) {
            graphics->DrawLine(line[r0]);
        }
        graphics->SetTranslate(grid);
    }
    return;
}// SFYRadiobuttonControl::RenderCheckmark //

参照

SFZRadiobuttonControl::HandleRenderRequest


SFYRadiobuttonControl::DrawCheckmark11
ラジオボタン用 11 × 11 ピクセルのチェックマークを描画します。
[ protected, const ]
Void DrawCheckmark11(
    SFXGraphicsPtr graphics   // グラフィックスオブジェクト
    SFXGridConstRef grid      // 左上の座標
);

解説

この関数は、ラジオボタン用 11 × 11 ピクセルのチェックマークを描画します。

独自の処理を行う場合は、この関数をオーバーライドします。

[Tip] Tip
この関数は、SFZRadiobuttonControl::HandleRenderRequest 関数内で呼び出されます。

内部実装

この関数の内部実装は以下の通りです。

/*protected */Void SFYRadiobuttonControl::DrawCheckmark11(SFXGraphicsPtr graphics, SFXGridConstRef grid) const
{
    static SFXRectangle::AtomRecConst           rectangle[] = {
        {{ 2,  2}, { 7,  7}}
    };
    static SFXLine::AtomRecConst                line[] = {
        {{ 4,  0}, { 6,  0}}, {{ 2,  1}, { 8,  1}}, {{10,  4}, {10,  6}}, {{ 9,  2}, { 9,  8}},
        {{ 0,  4}, { 0,  6}}, {{ 1,  2}, { 1,  8}}, {{ 4, 10}, { 6, 10}}, {{ 2,  9}, { 8,  9}}
    };

    RenderCheckmark(graphics, grid, atomic_cast(rectangle), lengthof(rectangle), atomic_cast(line), lengthof(line));
    return;
}// SFYRadiobuttonControl::DrawCheckmark11 //

/*private */Void SFYRadiobuttonControl::RenderCheckmark(SFXGraphicsPtr graphics, SFXGridConstRef grid, SFXRectangleConstPtr rectangle, SInt32 rlength, SFXLineConstPtr line, SInt32 llength) const
{
    SFXRGBColor                                 rgb;
    SInt32                                      r0;

    if (GetCurrentValue()) {
        graphics->SetTranslate(-grid);
        rgb.Set(GetCheckmarkColor());
        if (!GetStateActive(true)) {
            (rgb.GetBrightness() > 0x7F) ? rgb.SubRGB(0x44) : rgb.AddRGB(0x44);
        }
        graphics->SetFillMode(true);
        graphics->SetForeColor(rgb);
        graphics->SetFillColor(rgb);
        for (r0 = 0; r0 < rlength; ++r0) {
            graphics->DrawRectangle(rectangle[r0]);
        }
        for (r0 = 0; r0 < llength; ++r0) {
            graphics->DrawLine(line[r0]);
        }
        graphics->SetTranslate(grid);
    }
    return;
}// SFYRadiobuttonControl::RenderCheckmark //

参照

SFZRadiobuttonControl::HandleRenderRequest


SFYRadiobuttonControl::DrawShadow14
ラジオボタン用 14 × 14 ピクセルの影を描画します。
[ protected, const ]
SFXGrid DrawShadow14(
    SFXGraphicsPtr graphics   // グラフィックスオブジェクト
    SFXGridConstRef grid      // 左上の座標
);

解説

この関数は、ラジオボタン用 14 × 14 ピクセルの影を描画します。

独自の処理を行う場合は、この関数をオーバーライドします。

[Tip] Tip
この関数は、SFZRadiobuttonControl::HandleRenderRequest 関数内で呼び出されます。

内部実装

この関数の内部実装は以下の通りです。

/*protected */SFXGrid SFYRadiobuttonControl::DrawShadow14(SFXGraphicsPtr graphics, SFXGridConstRef grid) const
{
    static SFXLine::AtomRecConst                line[][9] = {
        {
            {{11,  1}, {11,  1}}, {{ 1, 11}, { 1, 11}}, {{12,  2}, {12,  3}}, {{ 2, 12}, { 3, 12}},
            {{13,  4}, {13,  8}}, {{12,  9}, {12, 10}}, {{ 4, 13}, { 8, 13}}, {{ 9, 12}, {10, 12}},
            {{11, 11}, {11, 11}}
        },
        {
            {{12,  2}, {12,  2}}, {{ 2, 12}, { 2, 12}}, {{10,  1}, {11,  1}}, {{ 1, 10}, { 1, 11}},
            {{ 3,  1}, { 4,  1}}, {{ 5,  0}, { 9,  0}}, {{ 1,  3}, { 1,  4}}, {{ 0,  5}, { 0,  9}},
            {{ 2,  2}, { 2,  2}}
        }
    };
    static SInt16Const                          color[] = {
        0,  2,  4
    };
    SFXGrid                                     result(grid);

    if (GetStatePress()) {
        RenderShadow(graphics, grid, atomic_cast(line[1]), lengthof(line[1]), color);
        result.Add(1, 1);
    }
    else {
        RenderShadow(graphics, grid, atomic_cast(line[0]), lengthof(line[0]), color);
        result.Add(0, 0);
    }
    return result;
}// SFYRadiobuttonControl::DrawShadow14 //

/*private */Void SFYRadiobuttonControl::RenderShadow(SFXGraphicsPtr graphics, SFXGridConstRef grid, SFXLineConstPtr line, SInt32 llength, SInt16Const color[3]) const
{
    SFXRGBColor                                 rgb;
    SInt32                                      r0;
    Bool                                        shadowBright;

    graphics->SetTranslate(-grid);
    rgb.Set(GetShadowColor());
    shadowBright = rgb.GetBrightness() > 0x7F;
    if (!GetStateActive(true)) {
        (shadowBright) ? rgb.SubRGB(0x44) : rgb.AddRGB(0x44);
    }
    for (r0 = 0; r0 < llength; ++r0) {
        if (r0 == color[0]) {
            graphics->SetForeColor(
                (shadowBright) ? SFXRGBColor(rgb).SubRGB(0x44) : SFXRGBColor(rgb).AddRGB(0x44)
            );
        }
        else if (r0 == color[1]) {
            graphics->SetForeColor(
                (shadowBright) ? SFXRGBColor(rgb).SubRGB(0x22) : SFXRGBColor(rgb).AddRGB(0x22)
            );
        }
        else if (r0 == color[2]) {
            graphics->SetForeColor(rgb);
        }
        graphics->DrawLine(line[r0]);
    }
    graphics->SetTranslate(grid);
    return;
}// SFYRadiobuttonControl::RenderShadow //

参照

SFZRadiobuttonControl::HandleRenderRequest


SFYRadiobuttonControl::DrawShadow28
ラジオボタン用 28 × 28 ピクセルの影を描画します。
[ protected, const ]
SFXGrid DrawShadow28(
    SFXGraphicsPtr graphics   // グラフィックスオブジェクト
    SFXGridConstRef grid      // 左上の座標
);

解説

この関数は、ラジオボタン用 28 × 28 ピクセルの影を描画します。

独自の処理を行う場合は、この関数をオーバーライドします。

[Tip] Tip
この関数は、SFZRadiobuttonControl::HandleRenderRequest 関数内で呼び出されます。

内部実装

この関数の内部実装は以下の通りです。

/*protected */SFXGrid SFYRadiobuttonControl::DrawShadow28(SFXGraphicsPtr graphics, SFXGridConstRef grid) const
{
    static SFXLine::AtomRecConst                line[][17] = {
        {
            {{23,  3}, {23,  3}}, {{24,  4}, {24,  5}}, {{ 3, 23}, { 3, 23}}, {{ 4, 24}, { 5, 24}},
            {{25,  6}, {25,  6}}, {{26,  7}, {26,  9}}, {{ 6, 25}, { 6, 25}}, {{ 7, 26}, { 9, 26}},
            {{27, 10}, {27, 16}}, {{26, 17}, {26, 19}}, {{25, 20}, {25, 20}}, {{24, 21}, {24, 22}},
            {{10, 27}, {16, 27}}, {{17, 26}, {19, 26}}, {{20, 25}, {20, 25}}, {{21, 24}, {22, 24}},
            {{23, 23}, {23, 23}}
        },
        {
            {{22,  3}, {23,  3}}, {{24,  4}, {24,  4}}, {{ 3, 22}, { 3, 23}}, {{ 4, 24}, { 4, 24}},
            {{18,  1}, {20,  1}}, {{21,  2}, {21,  2}}, {{ 1, 18}, { 1, 20}}, {{ 2, 21}, { 2, 21}},
            {{ 5,  3}, { 6,  3}}, {{ 7,  2}, { 7,  2}}, {{ 8,  1}, {10,  1}}, {{11,  0}, {17,  0}},
            {{ 3,  5}, { 3,  6}}, {{ 2,  7}, { 2,  7}}, {{ 1,  8}, { 1, 10}}, {{ 0, 11}, { 0, 17}},
            {{ 4,  4}, { 4,  4}}
        }
    };
    static SInt16Const                          color[] = {
        0,  4,  8
    };
    SFXGrid                                     result(grid);

    if (GetStatePress()) {
        RenderShadow(graphics, grid, atomic_cast(line[1]), lengthof(line[1]), color);
        result.Add(1, 1);
    }
    else {
        RenderShadow(graphics, grid, atomic_cast(line[0]), lengthof(line[0]), color);
        result.Add(0, 0);
    }
    return result;
}// SFYRadiobuttonControl::DrawShadow28 //

/*private */Void SFYRadiobuttonControl::RenderShadow(SFXGraphicsPtr graphics, SFXGridConstRef grid, SFXLineConstPtr line, SInt32 llength, SInt16Const color[3]) const
{
    SFXRGBColor                                 rgb;
    SInt32                                      r0;
    Bool                                        shadowBright;

    graphics->SetTranslate(-grid);
    rgb.Set(GetShadowColor());
    shadowBright = rgb.GetBrightness() > 0x7F;
    if (!GetStateActive(true)) {
        (shadowBright) ? rgb.SubRGB(0x44) : rgb.AddRGB(0x44);
    }
    for (r0 = 0; r0 < llength; ++r0) {
        if (r0 == color[0]) {
            graphics->SetForeColor(
                (shadowBright) ? SFXRGBColor(rgb).SubRGB(0x44) : SFXRGBColor(rgb).AddRGB(0x44)
            );
        }
        else if (r0 == color[1]) {
            graphics->SetForeColor(
                (shadowBright) ? SFXRGBColor(rgb).SubRGB(0x22) : SFXRGBColor(rgb).AddRGB(0x22)
            );
        }
        else if (r0 == color[2]) {
            graphics->SetForeColor(rgb);
        }
        graphics->DrawLine(line[r0]);
    }
    graphics->SetTranslate(grid);
    return;
}// SFYRadiobuttonControl::RenderShadow //

参照

SFZRadiobuttonControl::HandleRenderRequest


SFYRadiobuttonControl::Group
ラジオボタンコントロールをグループに登録します。
[ public ]
Void Group(
    SFYRadiobuttonControlSmpConstRef param   // 登録するグループ
);

解説

この関数は、このラジオボタンコントロールをグループに登録します。

[Note] 注意

この関数は、複数のラジオボタンコントロールをグループ化し、選択状態の排他的切替を自動的に行えるようにします。

参照

SFYRadiobuttonControl::Ungroup


SFYRadiobuttonControl::HandleOperateKeyRelease
操作キーの SFEVT_KEY_RELEASE イベントを受信したときに呼び出される関数です。
[ protected, virtual ]
Void HandleOperateKeyRelease(Void);

解説

この関数は、SFYButtonControl::SetOperateKey 関数で設定した操作キーの SFEVT_KEY_RELEASE イベント (キーイベント[SFEVT_KEY])を受信したときに呼び出されます。

独自のキー解放イベント処理を行いたい場合は、この関数をオーバーライドします。

デフォルトの実装は、グループ化されたラジオボタンの選択状態の切替を行い、 結果イベント [SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_OK, 現在値)] を送信します。 現在値は、SFYControl::GetCurrentValue 関数を呼び出すことで取得できる値です。

内部実装

この関数の内部実装は以下の通りです。

/*protected virtual */Void SFYRadiobuttonControl::HandleOperateKeyRelease(Void)
{
    SFYRadiobuttonControlPtr                    responder;

    for (responder = _forward; responder != this; responder = responder->_forward) {
        responder->SetCurrentValue(false);
    }
    SetCurrentValue(true);
    InvokeForward(SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_OK, GetCurrentValue()), false);
    return;
}// SFYRadiobuttonControl::HandleOperateKeyRelease //

参照

SFYButtonControl::SetOperateKey | キーイベント[SFEVT_KEY]


SFYRadiobuttonControl::Ungroup
ラジオボタンコントロールのグループ登録を解除します。
[ public ]
Void Ungroup(Void);

解説

この関数は、このラジオボタンコントロールのグループ登録を解除します。

参照

SFYRadiobuttonControl::Group


SFYRadiobuttonControl::CodeEnum
SFYRadiobuttonControl クラスを表す定数です。
enum CodeEnum {
    CODE_TYPE = four_char_code('.', 'r', 'd', 'o')
};
SFMTYPEDEFTYPE(CodeEnum)

参照

SFYResponder::GetType | SFYResponder::SetType