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

継承図

SFYCheckboxControl クラスの継承図

協調図

SFYCheckboxControl クラスの協調図

解説

■ 仕様と使い方

SFYCheckboxControl は、各種チェックボックスコントロールを実装するための起点となります。

SFYCheckboxControl は、 チェックボックスと影の描画機能とチェック状態の切り替えを実装し、 いくつかの仮想関数のデフォルトの動作も実装します。

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

■ イベントとハンドラ

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

[Note] 注意

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

[Tip] Tip

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

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

イベント 仮想関数(ハンドラ) デフォルトの動作 オーバーライド
SFYButtonControl::SetOperateKey で設定された操作キーの SFEVT_KEY イベント SFYButtonControl::HandleOperateKey 任意
SFYButtonControl::SetOperateKey で設定された操作キーの SFEVT_KEY_PRESS イベント SFYButtonControl::HandleOperateKeyPress 任意
SFYButtonControl::SetOperateKey で設定された操作キーの SFEVT_KEY_RELEASE イベント SFYCheckboxControl::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())) を実行します。つまり、仮想領域を実領域に一致させます。

ユーザー定義チェックボックスコントロールを作成するときに最低限必要なコードを示します。

例 872. 宣言

SFMTYPEDEFRESPONDER(USRCheckboxControl)
class USRCheckboxControl : public SFYCheckboxControl {
    SFMSEALRESPONDER(USRCheckboxControl)
    SFMRESPONDERINSTANTIATEFIVE(USRCheckboxControl, SFYCheckboxControl, SFYButtonControl, SFYControl, SFYWidget, SFYResponder)
public:

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

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

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

例 873. 実装

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

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

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

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

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

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

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

    return;
}

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

    return;
}

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

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

    // SFYCheckboxControl::DrawButton**/DrawShadow**/ DrawCheckmark** 関数を使用して、
    // チェックボックスと影を描画する

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

    if (_height >= 28) {
        grid.Set(DrawShadow28(graphics, _origin));
        DrawButton27(graphics, grid);
        grid.Add(3, 3);
        DrawCheckmark21(graphics, grid);
    }
    else if (_height >= 14) {
        grid.Set(DrawShadow14(graphics, _origin));
        DrawButton13(graphics, grid);
        grid.Add(2, 2); 
        DrawCheckmark09(graphics, grid);
    }

    // チェックボックスコントロールのラベル部分を描画する

    return;
}

参照

SFYCheckboxControl::SFYCheckboxControl | SFYButtonControl::SFYButtonControl | SFYControl::SFYControl | SFYWidget::SFYWidget | SFYControl | SFYButtonControl | SFZCheckboxControl | SFZRadiobuttonControl | キーイベント[SFEVT_KEY/SFEVT_KEY_PRESS/SFEVT_KEY_RELEASE] | 領域イベント[SFEVT_RESPONDER_BOUND] | 描画イベント[SFEVT_RESPONDER_RENDER] | チェックボックスコントロールを表す抽象クラス[SFYCheckboxControl]

メンバ

コンストラクタ/デストラクタ
SFYCheckboxControl( Void )
SFYCheckboxControl クラスのコンストラクタです。
~SFYCheckboxControl( Void )
SFYCheckboxControl クラスのデストラクタです。
パブリック関数
SFXRGBColorConstRef GetCheckmarkColor( Void )
チェックマークの色を取得します。
Void SetCheckmarkColor( SFXRGBColorConstRef param )
チェックマークの色を設定します。
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 から継承)
ボタンコントロール内ベベル領域を描画するベベルカラーを取得します。
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 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 DrawCheckmark09( SFXGraphicsPtr graphics , SFXGridConstRef grid )
チェックボックス用 9 × 9 ピクセルのチェックマークを描画します。
Void DrawCheckmark21( SFXGraphicsPtr graphics , SFXGridConstRef grid )
チェックボックス用 21 × 21 ピクセルのチェックマークを描画します。
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 から継承)
ボタンコントロールのベベル領域を描画します。
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
SFYCheckboxControl クラスを表す定数です。
HorizontalEnum (SFYResponder から継承)
水平方向のアライメントを表す定数です。
VerticalEnum (SFYResponder から継承)
垂直方向のアライメントを表す定数です。

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

解説

このコンストラクタは、以下の初期化処理を行います。

  1. タイプを ".chk" に設定します。
  2. 最大値を "true" に設定します。
  3. チェックマークの色を SFXRGBColor(0x00, 0x00, 0x00, 0x00)[黒色] に設定します。

内部実装

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

/*protected */SFYCheckboxControl::SFYCheckboxControl(Void) static_throws
{
    static SFXRGBColor::AtomRecConst            rgb[] = {
        {{{0x00, 0x00, 0x00, 0x00}}}
    };

    if (static_try()) {
        SetType(CODE_TYPE);
        SetMaximumValue(true);
        _color.checkmark.Set(rgb[0]);
    }
}// SFYCheckboxControl::SFYCheckboxControl //

参照

SFYResponder::SetType | SFYCheckboxControl::CodeEnum | SFYControl::SetMaximumValue | SFYCheckboxControl::SetCheckmarkColor | SFXRGBColor | タイプ


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

解説

このデストラクタは、何も行いません。

内部実装

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

/*protected virtual */SFYCheckboxControl::~SFYCheckboxControl(Void)
{
}// SFYCheckboxControl::~SFYCheckboxControl //

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

解説

この関数は、チェックボックス用 13 × 13 ピクセルのボタンを描画します。

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

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

内部実装

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

/*protected */Void SFYCheckboxControl::DrawButton13(SFXGraphicsPtr graphics, SFXGridConstRef grid) const
{
    static SFXRectangle::AtomRecConst           rectangle[] = {
        {{ 0,  0}, {13, 13}},
        {{ 2,  2}, { 9,  9}}
    };

    RenderButton(graphics, grid, atomic_cast(rectangle));
    return;
}// SFYCheckboxControl::DrawButton13 //

/*private */Void SFYCheckboxControl::RenderButton(SFXGraphicsPtr graphics, SFXGridConstRef grid, SFXRectangleConst rectangle[2]) const
{
    SFXBevelColor                               bevel;
    SFXRGBColorConstRef                         base(GetButtonColor().GetBase());
    SFXRGBColor                                 rgb;

    graphics->SetTranslate(-grid);
    bevel.Set((GetStateFocus(true)) ? (GetFocusColor()) : (GetButtonColor()));
    rgb.Set(base);
    if (!GetStateActive(true)) {
        bevel.SetLight(bevel.GetBase());
        bevel.SetDark(bevel.GetBase());
    }
    if (GetStatePress()) {
        if (base.GetBrightness() > 0x7F) {
            bevel.SubRGB(0x11);
            rgb.SubRGB(0x11);
        }
        else {
            bevel.AddRGB(0x11);
            rgb.AddRGB(0x11);
        }
    }
    graphics->FillBevelRectangle(rectangle[0], bevel);
    graphics->FillRectangle(rectangle[1], rgb);
    graphics->SetTranslate(grid);
    return;
}// SFYCheckboxControl::RenderButton //

参照

SFZCheckboxControl::HandleRenderRequest


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

解説

この関数は、チェックボックス用 27 × 27 ピクセルのボタンを描画します。

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

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

内部実装

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

/*protected */Void SFYCheckboxControl::DrawButton27(SFXGraphicsPtr graphics, SFXGridConstRef grid) const
{
    static SFXRectangle::AtomRecConst           rectangle[] = {
        {{ 0,  0}, {27, 27}},
        {{ 2,  2}, {23, 23}}
    };

    RenderButton(graphics, grid, atomic_cast(rectangle));
    return;
}// SFYCheckboxControl::DrawButton27 //

/*private */Void SFYCheckboxControl::RenderButton(SFXGraphicsPtr graphics, SFXGridConstRef grid, SFXRectangleConst rectangle[2]) const
{
    SFXBevelColor                               bevel;
    SFXRGBColorConstRef                         base(GetButtonColor().GetBase());
    SFXRGBColor                                 rgb;

    graphics->SetTranslate(-grid);
    bevel.Set((GetStateFocus(true)) ? (GetFocusColor()) : (GetButtonColor()));
    rgb.Set(base);
    if (!GetStateActive(true)) {
        bevel.SetLight(bevel.GetBase());
        bevel.SetDark(bevel.GetBase());
    }
    if (GetStatePress()) {
        if (base.GetBrightness() > 0x7F) {
            bevel.SubRGB(0x11);
            rgb.SubRGB(0x11);
        }
        else {
            bevel.AddRGB(0x11);
            rgb.AddRGB(0x11);
        }
    }
    graphics->FillBevelRectangle(rectangle[0], bevel);
    graphics->FillRectangle(rectangle[1], rgb);
    graphics->SetTranslate(grid);
    return;
}// SFYCheckboxControl::RenderButton //

参照

SFZCheckboxControl::HandleRenderRequest


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

解説

この関数は、チェックボックス用 9 × 9 ピクセルのチェックマークを描画します。

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

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

内部実装

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

/*protected */Void SFYCheckboxControl::DrawCheckmark09(SFXGraphicsPtr graphics, SFXGridConstRef grid) const
{
    static SFXLine::AtomRecConst                line[] = {
        {{ 0,  5}, { 2,  7}},
        {{ 3,  6}, { 8,  1}},
        {{ 0,  6}, { 2,  8}},
        {{ 3,  7}, { 8,  2}}
    };

    RenderCheckmark(graphics, grid, atomic_cast(line));
    return;
}// SFYCheckboxControl::DrawCheckmark09 //

/*private */Void SFYCheckboxControl::RenderCheckmark(SFXGraphicsPtr graphics, SFXGridConstRef grid, SFXLineConst line[4]) const
{
    SFXRGBColor                                 rgb;
    Bool                                        checkmarkBright;

    if (GetCurrentValue()) {
        graphics->SetTranslate(-grid);
        rgb.Set(_color.checkmark);
        checkmarkBright = _color.checkmark.GetBrightness() > 0x7F;
        if (!GetStateActive(true)) {
            (checkmarkBright) ? rgb.SubRGB(0x44) : rgb.AddRGB(0x44);
        }
        graphics->SetForeColor(rgb);
        graphics->DrawLine(line[0]);
        graphics->DrawLine(line[1]);
        (checkmarkBright) ? rgb.SubRGB(0x44) : rgb.AddRGB(0x44);
        graphics->SetForeColor(rgb);
        graphics->DrawLine(line[2]);
        graphics->DrawLine(line[3]);
        graphics->SetTranslate(grid);
    }
    return;
}// SFYCheckboxControl::RenderCheckmark //

参照

SFZCheckboxControl::HandleRenderRequest


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

解説

この関数は、チェックボックス用 21 × 21 ピクセルのチェックマークを描画します。

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

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

内部実装

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

/*protected */Void SFYCheckboxControl::DrawCheckmark21(SFXGraphicsPtr graphics, SFXGridConstRef grid) const
{
    static SFXLine::AtomRecConst                line[] = {
        {{ 0, 15}, { 4, 19}},
        {{ 5, 18}, {20,  3}},
        {{ 0, 16}, { 4, 20}},
        {{ 5, 19}, {20,  4}}
    };

    RenderCheckmark(graphics, grid, atomic_cast(line));
    return;
}// SFYCheckboxControl::DrawCheckmark21 //

/*private */Void SFYCheckboxControl::RenderCheckmark(SFXGraphicsPtr graphics, SFXGridConstRef grid, SFXLineConst line[4]) const
{
    SFXRGBColor                                 rgb;
    Bool                                        checkmarkBright;

    if (GetCurrentValue()) {
        graphics->SetTranslate(-grid);
        rgb.Set(_color.checkmark);
        checkmarkBright = _color.checkmark.GetBrightness() > 0x7F;
        if (!GetStateActive(true)) {
            (checkmarkBright) ? rgb.SubRGB(0x44) : rgb.AddRGB(0x44);
        }
        graphics->SetForeColor(rgb);
        graphics->DrawLine(line[0]);
        graphics->DrawLine(line[1]);
        (checkmarkBright) ? rgb.SubRGB(0x44) : rgb.AddRGB(0x44);
        graphics->SetForeColor(rgb);
        graphics->DrawLine(line[2]);
        graphics->DrawLine(line[3]);
        graphics->SetTranslate(grid);
    }
    return;
}// SFYCheckboxControl::RenderCheckmark //

参照

SFZCheckboxControl::HandleRenderRequest


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

解説

この関数は、チェックボックス用 14 × 14 ピクセルの影を描画します。

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

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

内部実装

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

/*protected */SFXGrid SFYCheckboxControl::DrawShadow14(SFXGraphicsPtr graphics, SFXGridConstRef grid) const
{
    static SFXLine::AtomRecConst                line[][2] = {
        {{{13,  0}, {13, 13}}, {{ 0, 13}, {13, 13}}},
        {{{ 0,  0}, {13,  0}}, {{ 0,  0}, { 0, 13}}}
    };
    SFXGrid                                     result(grid);

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

/*private */Void SFYCheckboxControl::RenderShadow(SFXGraphicsPtr graphics, SFXGridConstRef grid, SFXLineConst line[2]) const
{
    SFXRGBColor                                 rgb;

    graphics->SetTranslate(-grid);
    rgb.Set(GetShadowColor());
    if (!GetStateActive(true)) {
        (rgb.GetBrightness() > 0x7F) ? rgb.SubRGB(0x44) : rgb.AddRGB(0x44);
    }
    graphics->SetForeColor(rgb);
    graphics->DrawLine(line[0]);
    graphics->DrawLine(line[1]);
    graphics->SetTranslate(grid);
    return;
}// SFYCheckboxControl::RenderShadow //

参照

SFZCheckboxControl::HandleRenderRequest


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

解説

この関数は、チェックボックス用 28 × 28 ピクセルの影を描画します。

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

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

内部実装

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

/*protected */SFXGrid SFYCheckboxControl::DrawShadow28(SFXGraphicsPtr graphics, SFXGridConstRef grid) const
{
    static SFXLine::AtomRecConst                line[][2] = {
        {{{27,  0}, {27, 27}}, {{ 0, 27}, {27, 27}}},
        {{{ 0,  0}, {27,  0}}, {{ 0,  0}, { 0, 27}}}
    };
    SFXGrid                                     result(grid);

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

/*private */Void SFYCheckboxControl::RenderShadow(SFXGraphicsPtr graphics, SFXGridConstRef grid, SFXLineConst line[2]) const
{
    SFXRGBColor                                 rgb;

    graphics->SetTranslate(-grid);
    rgb.Set(GetShadowColor());
    if (!GetStateActive(true)) {
        (rgb.GetBrightness() > 0x7F) ? rgb.SubRGB(0x44) : rgb.AddRGB(0x44);
    }
    graphics->SetForeColor(rgb);
    graphics->DrawLine(line[0]);
    graphics->DrawLine(line[1]);
    graphics->SetTranslate(grid);
    return;
}// SFYCheckboxControl::RenderShadow //

参照

SFZCheckboxControl::HandleRenderRequest


SFYCheckboxControl::GetCheckmarkColor
チェックマークの色を取得します。
[ public, const ]
SFXRGBColorConstRef GetCheckmarkColor(Void);

戻り値

チェックマークの色。

解説

この関数は、チェックマークの色を取得します。

参照

SFYCheckboxControl::SetCheckmarkColor


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

解説

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

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

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

内部実装

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

/*protected virtual */Void SFYCheckboxControl::HandleOperateKeyRelease(Void)
{
    SetCurrentValue(!GetCurrentValue());
    InvokeForward(SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_OK, GetCurrentValue()), false);
    return;
}// SFYCheckboxControl::HandleOperateKeyRelease //

参照

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


SFYCheckboxControl::SetCheckmarkColor
チェックマークの色を設定します。
[ public ]
Void SetCheckmarkColor(
    SFXRGBColorConstRef param   // 設定する値
);

解説

この関数は、チェックボックスコントロールまたはラジオボタンコントロールのチェックマークを描画する色を設定します。

デフォルト値: SFXRGBColor(0x00, 0x00, 0x00, 0x00)[黒色]

■チェックボックスコントロールの場合

チェックボックスコントロールのチェックマークは、図にあるように4本の直線で描画されます。 上側にある2本の直線の色は、SFYCheckboxControl::SetCheckmarkColor 関数で設定される色です。

下側にある2本の直線の色は、上側の直線の色の明度が 0x7F より大きい場合はこの色の RGB 値からそれぞれ 0x44 を減算した色、 0x7F 以下の場合はこの色の RGB 値にそれぞれ 0x44 を加算した色になります。

図 305. チェックボックスコントロールの拡大図[活性状態または操作可能状態]

チェックボックスコントロールの拡大図[活性状態または操作可能状態]

図 306. チェックボックスコントロールの拡大図[非活性状態]

チェックボックスコントロールの拡大図[非活性状態]

非活性状態にあるときは、この関数で設定された色の明度が 0x7F より大きい場合はこの色の RGB 値からそれぞれ 0x44 を減算した色、 0x7F 以下の場合はこの色の RGB 値にそれぞれ 0x44 を加算した色でチェックマークの上側2本の直線は描画されます。 下側の2本の直線は、上述のこの上側の2本の直線の色の明度を基準にして計算した色になります。

■ラジオボタンコントロールの場合

ラジオボタンコントロールのチェックマークは、図にあるように領域の中央に描画されます。 この色は、SFYCheckboxControl::SetCheckmarkColor 関数で設定される色です。

図 307. ラジオボタンコントロールの拡大図[活性状態または操作可能状態]

ラジオボタンコントロールの拡大図[活性状態または操作可能状態]

図 308. ラジオボタンコントロールの拡大図[非活性状態]

ラジオボタンコントロールの拡大図[非活性状態]

非活性状態にあるときは、この関数で設定された色の明度が 0x7F より大きい場合はこの色の RGB 値からそれぞれ 0x44 を減算した色、 0x7F 以下の場合はこの色の RGB 値にそれぞれ 0x44 を加算した色でチェックマークは描画されます。

[Note] 色の明度

色の明度とは、SFXRGBColor::GetBrightness 関数によって得られる値です。

参照

SFYCheckboxControl::GetCheckmarkColor | SFXRGBColor::GetBrightness | SFXRGBColor | 状態


SFYCheckboxControl::CodeEnum
SFYCheckboxControl クラスを表す定数です。
enum CodeEnum {
    CODE_TYPE = four_char_code('.', 'c', 'h', 'k')
};
SFMTYPEDEFTYPE(CodeEnum)

参照

SFYResponder::GetType | SFYResponder::SetType