前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFYSingleTextWidget
単一行の編集不可能なテキストを表示するウィジェットです。
#include <SFYSingleTextWidget.h.hpp>
class SFYSingleTextWidget : public SFYWidget;
SFMTYPEDEFCLASS(SFYSingleTextWidget)

継承図

SFYSingleTextWidget クラスの継承図

協調図

SFYSingleTextWidget クラスの協調図

解説

■ 仕様と使い方

SFYSingleTextWidget は、単一行のテキストの描画に必要な機能だけが実装されているレスポンダです。 通常、単一行のテキストを扱うレスポンダで内部的に保持する子レスポンダとして使います。

たとえば、SFYSingleTextWidgetSFZTextButtonControlSFZSingleTextLabelControlSFZSingleTextBoxControl などの単一行のテキストを扱うコントロールの子レスポンダとして内部的に利用されます。

単一行のテキストを描画するこれらのコントロールでは、 単一行のテキストの設定、色の設定、フォントの設定、配置、スクロールなどの処理はすべて SFYSingleTextWidget に委譲して行われます。

単一行のテキストを描画する必要がある場合、SFYSingleTextWidget を利用すれば、 その処理を記述することなく簡単に実装することが可能です。 また、SFYSingleTextWidget に単一行のテキストの描画処理が一元化されるので保守性の優れたコードになります。

[Note] 使用するときの状態の値

このクラスを利用するときは、 可視状態:ON、活性状態:ON、操作可能状態:OFF、フォーカス状態:OFF の状態に設定します。

通常、このクラスはキーイベントに応答しないクラスとして使用します。

[Caution] 透過属性のデフォルト値

このクラスの透過属性のデフォルト値は true なので、 SFYResponder::SetPropertyTransparent 関数で透過属性を false に設定しない限り、 SFYWidget::SetBackgroundColor 関数で設定した色で背景が塗り潰されることはありません。

[Caution] 仮想領域

SFYSingleTextWidget では、 テキストの配置やスクロールを直感的に実現するために、 仮想領域実領域に合わせて使用することが推奨されます。

たとえば、

[仮想領域の横幅] ≧ [テキストの横幅] > [実領域の横幅]

の関係が成り立ちテキスト全体が画面に表示されないとき、 SFYSingleTextWidget::StartScroll 関数を呼び出してもスクロールは開始しません。

参照

SFZTextButtonControl | SFZSingleTextLabelControl | SFZSingleTextBoxControl | SFZComboBoxControl | SFZCheckboxControl | SFZRadiobuttonControl | SFZTitlePlainFrame | SFZTitleFlatFrame | SFZTitleBevelFrame | SFYSingleEditWidget | 仮想領域 | 実領域 | ローカル領域

メンバ

コンストラクタ/デストラクタ
SFYSingleTextWidget( Void )
SFYSingleTextWidget クラスのコンストラクタです。
~SFYSingleTextWidget( Void )
SFYSingleTextWidget クラスのデストラクタです。
パブリック関数
AEEFont GetFont( Void )
フォントを取得します。
SFXSizeConstRef GetFontSize( Void )
フォントの大きさを取得します。
HorizontalEnum GetHorizontalAlign( Void )
水平アライメントの値を取得します。
DirectionEnum GetScrollDirection( Void )
スクロールの移動方向を取得します。
UInt32 GetScrollInterval( Void )
スクロールインターバルを取得します。[単位:ミリ秒]
SInt16 GetScrollStep( Void )
スクロール移動量を取得します。[単位:ピクセル]
SFXWideStringConstRef GetText( Void )
テキストを取得します。
SFXRGBColorConstRef GetTextColor( Void )
テキストの色を取得します。
SFXSizeConstRef GetTextSize( Void )
テキストの大きさを取得します。
VerticalEnum GetVerticalAlign( Void )
垂直アライメントの値を取得します。
UInt32 GetWaitInterval( Void )
スクロール開始までの待ち時間を取得します。[単位:ミリ秒]
static
SFYSingleTextWidgetSmp
NewInstance( SFCErrorPtr exception = null )
新しいインスタンスを作成します。
Void SetFont( AEEFont param )
フォントを設定します。
Void SetHorizontalAlign( HorizontalEnum param )
水平アライメントを設定します。
Void SetScrollDirection( DirectionEnum param )
スクロールの移動方向を設定します。
Void SetScrollInterval( UInt32 param )
スクロールインターバルを設定します。[単位:ミリ秒]
Void SetScrollStep( SInt16 param )
スクロール移動量を設定します。[単位:ピクセル]
SFCError SetText( SFXPathConstRef path , UInt16 id )
テキストを設定します。
SFCError SetText( SFXWideStringConstRef param )
テキストを設定します。
Void SetTextColor( SFXRGBColorConstRef param )
テキストの色を設定します。
Void SetVerticalAlign( VerticalEnum param )
垂直アライメントを設定します。
Void SetWaitInterval( UInt32 param )
スクロール開始までの待ち時間を設定します。[単位:ミリ秒]
Void StartScroll( Void )
テキストのスクロールを開始します。
Void StopScroll( Void )
テキストのスクロールを停止します。
Void ClearHandler( Void ) (SFYResponder から継承)
このレスポンダのハンドラの登録をすべて解除します。
Void ClearTracer( Void ) (SFYResponder から継承)
このレスポンダのトレーサの配信規則の登録をすべて解除します。
SFCError Distribute( SFXEventConstRef event , BoolPtr result = null ) (SFYResponder から継承)
指定された配信型イベントを SFYDistributer インスタンスと、このレスポンダ以下のレスポンダツリーに配信します。
SFXRGBColorConstRef GetBackgroundColor( Void ) (SFYWidget から継承)
背景の色を取得します。
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 から継承)
最前面に位置するこのレスポンダの子レスポンダを取得します。
SFYDistributerPtr GetDistributer( Void ) (SFYResponder から継承)
このレスポンダに設定されている配信エンジンを取得します。
SFYResponderSmp GetFrame( Void ) (SFYResponder から継承)
このレスポンダに装着されたフレームを取得します。
SFXRectangle GetGlobalBound( Void ) (SFYResponder から継承)
このレスポンダのグローバル領域を取得します。
UInt32 GetID( Void ) (SFYResponder から継承)
このレスポンダの ID を取得します。
SFXRectangle GetLocalBound( Void ) (SFYResponder から継承)
このレスポンダのローカル領域を取得します。
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 から継承)
このレスポンダが前面から数えて何番目に位置するかを取得します。
SFYResponderSmp GetParent( Void ) (SFYResponder から継承)
このレスポンダの親レスポンダを取得します。
Bool GetPropertyTransparent( Void ) (SFYResponder から継承)
このレスポンダの透過属性を取得します。
SFXRectangleConstRef GetRealBound( Void ) (SFYResponder から継承)
このレスポンダの実領域を取得します。
VoidPtr GetReference( Void ) (SFYResponder から継承)
このレスポンダのリファレンス値を取得します。
SFYRendererPtr GetRenderer( Void ) (SFYResponder から継承)
このレスポンダに設定されている描画エンジンを取得します。
SFYResponderSmp GetRoot( Void ) (SFYResponder から継承)
このレスポンダが所属するレスポンダツリーのルートレスポンダを取得します。
Bool GetStateActive( Bool inherit = false ) (SFYResponder から継承)
このレスポンダの活性状態を取得します。
Bool GetStateEnable( Bool inherit = false ) (SFYResponder から継承)
このレスポンダの操作可能状態を取得します。
Bool GetStateFocus( Bool inherit = false ) (SFYResponder から継承)
このレスポンダのフォーカス状態を取得します。
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 SetDistributer( SFYDistributerPtr param ) (SFYResponder から継承)
指定された配信エンジンをこのレスポンダに設定します。
SFCError SetFrame( SFYResponderSmpConstRef param ) (SFYResponder から継承)
このレスポンダにフレームを装着します。
Void SetID( UInt32 param ) (SFYResponder から継承)
指定された ID をこのレスポンダに設定します。
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 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 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 DrawText( SFXGraphicsPtr graphics , SFXGridConstRef grid )
複数行のテキストを描画します。
SInt16 GetScrollOffset( Void )
スクロールオフセットの値を取得します。
SFXGridConstRef GetTextOrigin( Void )
テキスト領域の始点を取得します。
Void HandleBoundOptimize( SFXRectanglePtr rectangle )
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE) イベントを受信したときに呼び出される関数です(指定した矩形に収まる範囲内で最適な領域を計算します)。
Void HandleBoundReal( Void )
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベントを受信したときに呼び出される関数です (実領域が変化したときの処理を行います)。
Void HandleBoundRequest( SFXRectanglePtr rectangle )
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベントを受信したときに呼び出される関数です(最適な領域を計算します)。
Void HandleBoundVirtual( Void )
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL) イベントを受信したときに呼び出される関数です (仮想領域が変化したときの処理を行います)。
Void HandleRenderRequest( SFXGraphicsPtr graphics )
描画イベントを受信したときに呼び出される関数です(レスポンダを描画します)。
static
SFYResponderSmp
Factory( SFYResponderPtr responder , SFCErrorPtr exception = null ) (SFYResponder から継承)
NewInstance 関数の実装を補助します。
SFYResponderSmp GetThis( Void ) (SFYResponder から継承)
このレスポンダのスマートポインタを取得します。
Void HandleBoundGlobal( SFXRectangleConstRef rectangle ) (SFYWidget から継承)
[非推奨(廃止予定 API)] グローバル領域が変化したときに呼び出される関数です。
Void SetType( SFCType param ) (SFYResponder から継承)
指定された値をこのレスポンダのタイプに設定します。
CodeEnum
SFYSingleTextWidget クラスを表す定数です。
DefaultEnum
各種パラメータのデフォルト値を表します。
DirectionEnum
スクロールの移動方向を表します。
HorizontalEnum
水平方向のアライメントを表す定数です。
VerticalEnum
垂直方向のアライメントを表す定数です。

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

解説

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

  1. タイプを "+stx" に設定します。
  2. 透過属性を "true" に設定します。
  3. テキストの文字列を ""[空文字列] に設定します。
  4. テキストの色を SFXRGBColor(0x00, 0x00, 0x00, 0x00)[黒色] に設定します。
  5. テキストのフォントを AEE_FONT_NORMAL に設定します。
  6. テキストの水平アライメントを SFYSingleTextWidget::DEFAULT_HORIZONTAL に設定します。
  7. テキストの垂直アライメントを SFYSingleTextWidget::DEFAULT_VERTICAL に設定します。
  8. テキストのスクロール開始までの待ち時間を SFYSingleTextWidget::DEFAULT_WAIT に設定します。
  9. テキストのスクロール移動方向を SFYSingleTextWidget::DEFAULT_DIRECTION に設定します。
  10. テキストのスクロールインターバルを SFYSingleTextWidget::DEFAULT_SCROLL に設定します。
  11. テキストのスクロール移動量を SFYSingleTextWidget::DEFAULT_STEP に設定します。
  12. 下表にあるハンドラをレスポンダに登録します。

表 248. イベントハンドラ

イベント ハンドラの内容
アプリ中断イベント[SFEVT_APP_SUSPEND] テキストをスクロールするためのタイマー処理をキャンセルします。
アプリ再開イベント[SFEVT_APP_RESUME] テキストをスクロールするためのタイマー処理を再開します。
[Note] 注意
SFYSingleTextWidget クラスを継承するレスポンダでは、 上記イベントが発生すると、それに対応するハンドラが呼び出されます。

内部実装

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

/*protected */SFYSingleTextWidget::SFYSingleTextWidget(Void) static_throws : _state(STATE_IDLE)
{
    static SFXRGBColor::AtomRecConst            rgb[] = {
        {{{0x00, 0x00, 0x00, 0x00}}}
    };
    static SFXEventRange::AtomRecConst          trange[] = {
        {      SFEVT_APP_RESUME,       SFEVT_APP_RESUME,          SFP16_BEGIN,            SFP16_END},
        {     SFEVT_APP_SUSPEND,      SFEVT_APP_SUSPEND,          SFP16_BEGIN,            SFP16_END},
        { SFEVT_RESPONDER_STATE,  SFEVT_RESPONDER_STATE,    SFP16_STATE_VALID,    SFP16_STATE_VALID}
    };
    SFYHandler::RuleRec                         trule[lengthof(trange)];

    if (static_try()) {
        SetType(CODE_TYPE);
        trule[0].spp = XANDLER_FUNCTION(OnAppResume);
        trule[0].reference = this;
        trule[1].spp = XANDLER_FUNCTION(OnAppSuspend);
        trule[1].reference = this;
        trule[2].spp = XANDLER_FUNCTION(OnStateValid);
        trule[2].reference = this;
        static_throw(RegisterHandler(atomic_cast(trange), trule, lengthof(trange)));
        if (static_try()) {
            SetPropertyTransparent(true);
            _font = AEE_FONT_NORMAL;
            _color.text.Set(rgb[0]);
            _align.horizontal = DEFAULT_HORIZONTAL;
            _align.vertical = DEFAULT_VERTICAL;
            _timer.Set(XALLBACK_INTERNAL(OnTimer));
            _wait = DEFAULT_WAIT;
            _scroll = DEFAULT_SCROLL;
            _direction = DEFAULT_DIRECTION;
            _step = Measure();
            Relocate();
        }
    }
}// SFYSingleTextWidget::SFYSingleTextWidget //

/*private */XANDLER_IMPLEMENT_VOIDRESUME(SFYSingleTextWidget, OnAppResume, invoker, environment)
{
    unused(invoker);
    unused(environment);
    switch (_state) {
        case STATE_WAIT:
            _timer.Schedule(_wait);
            break;
        case STATE_SCROLL:
            _timer.Schedule(_scroll);
            break;
        case STATE_IDLE:
        default:
            break;
    }
    return;
}// XANDLER_IMPLEMENT_VOIDRESUME(SFYSingleTextWidget, OnAppResume) //

/*private */XANDLER_IMPLEMENT_VOIDSUSPEND(SFYSingleTextWidget, OnAppSuspend, invoker, reason, info)
{
    unused(invoker);
    unused(reason);
    unused(info);
    if (_state != STATE_IDLE) {
        _timer.Cancel();
    }
    return;
}// XANDLER_IMPLEMENT_VOIDSUSPEND(SFYSingleTextWidget, OnAppSuspend) //

/*private */XANDLER_IMPLEMENT_VOIDSTATE(SFYSingleTextWidget, OnStateValid, invoker, reason, state)
{
    unused(invoker);
    unused(reason);
    if (!state) {
        StopScroll();
    }
    return;
}// XANDLER_IMPLEMENT_VOIDSTATE(SFYSingleTextWidget, OnStateValid) //

/*private */SInt16 SFYSingleTextWidget::Measure(Void)
{
    _bound.SetSize(SFXSize::ZeroInstance());
    _size.Set(SFXGraphics::MeasureSingleText(_font, " "), SFXGraphics::GetFontHeight(_font));
    if (!_text.IsEmpty()) {
        _bound.SetSize(SFXGraphics::MeasureSingleText(_font, _text), _size.GetHeight());
    }
    return _size.GetWidth();
}// SFYSingleTextWidget::Measure //

/*private */XALLBACK_IMPLEMENT_SFXTIMER(SFYSingleTextWidget, OnTimer)
{
    SInt16                                      offset;

    switch (_state) {
        case STATE_WAIT:
            _state = STATE_SCROLL;
        case STATE_SCROLL:
            offset = 0;
            switch (_direction) {
                case DIRECTION_RIGHT:
                    offset = +_step;
                    break;
                case DIRECTION_LEFT:
                default:
                    offset = -_step;
                    break;
            }
            if (Scroll(offset)) {
                Render();
            }
            _timer.Schedule(_scroll);
            break;
        case STATE_IDLE:
        default:
            break;
    }
    return;
}// XALLBACK_IMPLEMENT_SFXTIMER(SFYSingleTextWidget, OnTimer) //

/*private */Bool SFYSingleTextWidget::Scroll(SInt16 param)
{
    SFXRectangle                                lx;
    Bool                                        result(false);

    lx.Set(GetLocalBound());
    if ((param += _offset) < -_bound.GetWidth()) {
        param = lx.GetWidth();
    }
    if (param > lx.GetWidth()) {
        param = -_bound.GetWidth();
    }
    if (param != _offset) {
        _offset = param;
        Invalidate();
        result = true;
    }
    return result;
}// SFYSingleTextWidget::Scroll //

参照

SFYResponder::SetType | SFYResponder::SetPropertyTransparent | SFYSingleTextWidget::CodeEnum | SFYSingleTextWidget::SetFont | SFYSingleTextWidget::SetText | SFYSingleTextWidget::SetTextColor | SFYSingleTextWidget::SetHorizontalAlign | SFYSingleTextWidget::SetVerticalAlign | SFYSingleTextWidget::SetScrollDirection | SFYSingleTextWidget::SetScrollInterval | SFYSingleTextWidget::SetScrollStep | SFYSingleTextWidget::SetWaitInterval | SFYSingleTextWidget::HorizontalEnum | SFYSingleTextWidget::VerticalEnum | SFYSingleTextWidget::DirectionEnum | SFYSingleTextWidget::DefaultEnum | SFXRGBColor | タイプ | 属性 | イベント | アプリ中断イベント[SFEVT_APP_SUSPEND] | アプリ再開イベント[SFEVT_APP_RESUME]


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

解説

このデストラクタは、テキストのスクロールを停止します。

内部実装

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

/*protected virtual */SFYSingleTextWidget::~SFYSingleTextWidget(Void)
{
    StopScroll();
}// SFYSingleTextWidget::~SFYSingleTextWidget //

参照

SFYSingleTextWidget::StopScroll


SFYSingleTextWidget::DrawText
複数行のテキストを描画します。
[ protected, const ]
Void DrawText(
    SFXGraphicsPtr graphics   // グラフィックスオブジェクト
    SFXGridConstRef grid      // 左上の座標
);

解説

複数行のテキストを描画します。

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

[Note] 注意
この関数は SFYSingleTextWidget::HandleRenderRequest 関数の中から呼び出されます。

内部実装

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

/*protected */Void SFYSingleTextWidget::DrawText(SFXGraphicsPtr graphics, SFXGridConstRef grid) const
{
    SFXGrid                                     origin;
    SFXRGBColor                                 rgb;

    origin.Set(grid);
    origin.AddX(_offset);
    rgb.Set(_color.text);
    if (!GetStateActive(true)) {
        if (rgb.GetBrightness() > 0x7F) {
            rgb.SubRGB(0x44);
        }
        else {
            rgb.AddRGB(0x44);
        }
    }
    graphics->SetFont(_font);
    graphics->DrawSingleText(_text, origin, rgb);
    return;
}// SFYSingleTextWidget::DrawText //

参照

SFYSingleTextWidget::HandleRenderRequest


SFYSingleTextWidget::GetFont
フォントを取得します。
[ public, const ]
AEEFont GetFont(Void);

戻り値

フォント。

解説

この関数は、フォントを取得します。

参照

SFYSingleTextWidget::SetFont | BREW API AEEFont


SFYSingleTextWidget::GetFontSize
フォントの大きさを取得します。
[ public, const ]
SFXSizeConstRef GetFontSize(Void);

戻り値

フォントの大きさ。

解説

この関数は、フォントの大きさを取得します。

設定されているフォントの半角 1 文字分(' ' で計算)の大きさを取得します。

参照

SFYSingleTextWidget::SetFont | BREW API AEEFont


SFYSingleTextWidget::GetHorizontalAlign
水平アライメントの値を取得します。
[ public, const ]
HorizontalEnum GetHorizontalAlign(Void);

戻り値

水平アライメントの値。

解説

この関数は、水平アライメントの値を取得します。

参照

SFYSingleTextWidget::SetHorizontalAlign | SFYSingleTextWidget::HorizontalEnum


SFYSingleTextWidget::GetScrollDirection
スクロールの移動方向を取得します。
[ public, const ]
DirectionEnum GetScrollDirection(Void);

戻り値

スクロールの移動方向。

解説

この関数は、スクロールの移動方向を取得します。

参照

SFYSingleTextWidget::SetScrollDirection


SFYSingleTextWidget::GetScrollInterval
スクロールインターバルを取得します。[単位:ミリ秒]
[ public, const ]
UInt32 GetScrollInterval(Void);

戻り値

スクロールインターバル。[単位:ミリ秒]

解説

この関数は、スクロールインターバルを取得します。[単位:ミリ秒]

参照

SFYSingleTextWidget::SetScrollInterval


SFYSingleTextWidget::GetScrollOffset
スクロールオフセットの値を取得します。
[ protected, const ]
SInt16 GetScrollOffset(Void);

戻り値

スクロールオフセットの値。

解説

この関数は、スクロールの結果による始点からのオフセットを取得します。


SFYSingleTextWidget::GetScrollStep
スクロール移動量を取得します。[単位:ピクセル]
[ public, const ]
SInt16 GetScrollStep(Void);

戻り値

スクロール移動量。[単位:ピクセル]

解説

この関数は、スクロール移動量を取得します。[単位:ピクセル]

参照

SFYSingleTextWidget::SetScrollStep


SFYSingleTextWidget::GetText
テキストを取得します。
[ public, const ]
SFXWideStringConstRef GetText(Void);

戻り値

テキスト。

解説

この関数は、テキストを取得します。

参照

SFYSingleTextWidget::SetText


SFYSingleTextWidget::GetTextColor
テキストの色を取得します。
[ public, const ]
SFXRGBColorConstRef GetTextColor(Void);

戻り値

テキストの色。

解説

この関数は、テキストの色を取得します。

参照

SFYSingleTextWidget::SetTextColor | SFXRGBColor


SFYSingleTextWidget::GetTextOrigin
テキスト領域の始点を取得します。
[ protected, const ]
SFXGridConstRef GetTextOrigin(Void);

戻り値

テキスト領域の始点。

解説

この関数は、テキスト領域の始点を取得します。


SFYSingleTextWidget::GetTextSize
テキストの大きさを取得します。
[ public, const ]
SFXSizeConstRef GetTextSize(Void);

解説

設定されているフォントで描画した場合のテキストの大きさを取得します。

参照

SFYSingleTextWidget::SetFont | BREW API AEEFont


SFYSingleTextWidget::GetVerticalAlign
垂直アライメントの値を取得します。
[ public, const ]
VerticalEnum GetVerticalAlign(Void);

戻り値

垂直アライメントの値。

解説

この関数は、垂直アライメントの値を取得します。

参照

SFYSingleTextWidget::SetVerticalAlign | SFYSingleTextWidget::VerticalEnum


SFYSingleTextWidget::GetWaitInterval
スクロール開始までの待ち時間を取得します。[単位:ミリ秒]
[ public, const ]
UInt32 GetWaitInterval(Void);

戻り値

スクロール開始までの待ち時間。[単位:ミリ秒]

解説

この関数は、スクロール開始までの待ち時間を取得します。[単位:ミリ秒]

参照

SFYSingleTextWidget::SetWaitInterval


SFYSingleTextWidget::HandleBoundOptimize
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE) イベントを受信したときに呼び出される関数です(指定した矩形に収まる範囲内で最適な領域を計算します)。
[ protected, virtual, const ]
Void HandleBoundOptimize(
    SFXRectanglePtr rectangle   // 矩形
);

解説

この関数は、 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE, rectangle)] を受信したときに呼び出されます。

引数 rectangle で指定した矩形領域に収まる範囲内で、レスポンダの最適な領域を計算します。

計算結果のレスポンダに最適なサイズは、rectangle 引数の size 要素(サイズ)に格納されます。 なお、領域イベントの P32 パラメータとして渡された rectangle 引数の origin 要素(始点)はこの関数内で変更しないことを推奨します。

デフォルトの実装は、以下のサイズを返します。

  1. 返される横幅:
    • w >= sw の場合 : sw
    • sw > w >= fw の場合 : fw * ( sw / fw ) [乗算と除算は整数演算]
    • fw > w の場合 : w
  2. 返される縦幅:
    • h >= sh の場合 : sh
    • sh > h >= fh の場合 : fh * ( sh / fh ) [乗算と除算は整数演算]
    • fh > h の場合 : h

ここで、w、h、sw、sh、fw、fh は以下のように定義されます。

[Note] 単一行テキストのサイズ : sw の計算方法

単一行テキストのサイズは、 SFYSingleTextWidget::SetFont 関数で設定したフォント、 SFYSingleTextWidget::SetText 関数で設定したテキストの内容から SFXGraphics::MeasureSingleText 関数を使用して計算します。

[Note] 領域イベント[(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE) イベント]

SFYResponder::GetSuitableBound 関数は、 引数にヒント領域を指定した場合は 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE, rectangle)] をレスポンダに送信します。

SFYWidget クラスを継承するレスポンダが領域イベントを受信すると、 SFYWidget::SFYWidget コンストラクタで最初に登録した領域イベント専用ハンドラの処理により、 SFYWidget::HandleBoundOptimize 仮想関数が呼び出されます。

※ 領域イベントの P32 パラメータ rectangle にはヒント領域が初期設定されています。

[Note] (SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE) イベント受信時の最適な領域計算

SFYWidget::HandleBoundOptimize 仮想関数をオーバーライドする以外に、 領域イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND]を定義・実装し レスポンダに登録して行うことも可能です。

最適な領域の計算は、最初に SFYWidget::HandleBoundOptimize 仮想関数を実行し、 次に領域イベント専用ハンドラを登録した順に実行して行われます。

領域イベント専用ハンドラを宣言し登録する手間が省けるので、 通常は SFYWidget::HandleBoundOptimize 仮想関数をオーバーライドして処理を記述します。

内部実装

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

/*protected virtual */Void SFYSingleTextWidget::HandleBoundOptimize(SFXRectanglePtr rectangle) const
{
    if (rectangle->GetWidth() > _bound.GetWidth()) {
        rectangle->SetWidth(_bound.GetWidth());
    }
    else if (rectangle->GetWidth() > _size.GetWidth()) {
        rectangle->DivWidth(_size.GetWidth());
        rectangle->MulWidth(_size.GetWidth());
    }
    if (rectangle->GetHeight() > _bound.GetHeight()) {
        rectangle->SetHeight(_bound.GetHeight());
    }
    else if (rectangle->GetHeight() > _size.GetHeight()) {
        rectangle->DivHeight(_size.GetHeight());
        rectangle->MulHeight(_size.GetHeight());
    }
    return;
}// SFYSingleTextWidget::HandleBoundOptimize //

参照

SFYResponder::GetSuitableBound | SFYSingleTextWidget::SetText | SFYSingleTextWidget::SetFont | SFXGraphics::MeasureSingleText | SFXEvent | 領域イベント[SFEVT_RESPONDER_BOUND]


SFYSingleTextWidget::HandleBoundReal
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベントを受信したときに呼び出される関数です (実領域が変化したときの処理を行います)。
[ protected, virtual ]
Void HandleBoundReal(Void);

解説

この関数は、領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL, rectangle)] を受信したときに呼び出されます。

実領域の変更時に追加の処理を行いたい場合は、この関数をオーバーライドします。

デフォルトの実装は、仮想領域を実領域に一致させます。

[Caution] 仮想領域

SFYSingleTextWidget クラスでは、 テキストの配置やスクロールを直感的に実現するために、 仮想領域実領域に合わせて使用することが推奨されます。

たとえば、

[仮想領域の横幅] ≧ [テキストの横幅] > [実領域の横幅]

の関係が成り立ちテキスト全体が画面に表示されないとき、 SFYSingleTextWidget::StartScroll 関数を呼び出してもスクロールは開始しません。

[Note] 領域イベント[(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベント]

SFYResponder::SetRealBound 関数は、この関数内の処理により実領域が変化すると、 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL, rectangle)] をレスポンダに送信します。

SFYWidget クラスを継承するレスポンダが領域イベントを受信すると、 SFYWidget::SFYWidget コンストラクタで最初に登録した領域イベント専用ハンドラの処理により、 SFYWidget::HandleBoundReal 仮想関数が呼び出されます。

※ 領域イベントの P32 パラメータ rectangle には変更後の実領域が設定されています。

[Note] 実領域が変化した時の処理

SFYWidget::HandleBoundReal 仮想関数をオーバーライドする以外に、 領域イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND]を定義・実装し レスポンダに登録して行うことも可能です。

実領域の変更処理は、最初に SFYWidget::HandleBoundReal 仮想関数を実行し、 次に領域イベント専用ハンドラを登録した順に実行して行われます。

領域イベント専用ハンドラを宣言し登録する手間が省けるので、 通常は SFYWidget::HandleBoundReal 仮想関数をオーバーライドして処理を記述します。

内部実装

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

/*protected virtual */Void SFYSingleTextWidget::HandleBoundReal(Void)
{
    SetVirtualBound(SFXRectangle(SFXGrid::ZeroInstance(), GetRealBound().GetSize()));
    return;
}// SFYSingleTextWidget::HandleBoundReal //

参照

SFYResponder::SetRealBound | 領域イベント[SFEVT_RESPONDER_BOUND] | 領域イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND] | 仮想領域 | 実領域 | ローカル領域


SFYSingleTextWidget::HandleBoundRequest
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベントを受信したときに呼び出される関数です(最適な領域を計算します)。
[ protected, virtual, const ]
Void HandleBoundRequest(
    SFXRectanglePtr rectangle   // 計算された座標
);

解説

この関数は、 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST, rectangle)] を受信したときに呼び出されます。

レスポンダの最適な領域を計算します。

計算結果のレスポンダに最適なサイズは、rectangle 引数の size 要素(サイズ)に格納されます。 なお、領域イベントの P32 パラメータとして渡された rectangle 引数の origin 要素(始点)はこの関数内で変更しないことを推奨します。

デフォルトの実装は、単一行テキストの矩形領域を返します。

単一行テキストの矩形領域のサイズは、 SFYSingleTextWidget::SetFont 関数で設定されたフォントと SFYSingleTextWidget::SetText 関数で設定されたテキストの内容から SFXGraphics::MeasureSingleText 関数を使用して計算します。

[Note] 領域イベント[(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベント]

SFYResponder::GetSuitableBound 関数は、 引数に何も指定しない場合は 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST, rectangle)] をレスポンダに送信します。

SFYWidget クラスを継承するレスポンダが領域イベントを受信すると、 SFYWidget::SFYWidget コンストラクタで最初に登録した領域イベント専用ハンドラの処理により、 SFYWidget::HandleBoundRequest 仮想関数が呼び出されます。

※ 領域イベントの P32 パラメータ rectangle には実領域が初期設定されています。

[Tip] Tip
実領域のデフォルト値は SFXRectangle(0, 0, 0, 0) です。

[Note] (SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベント受信時の最適な領域計算

SFYWidget::HandleBoundRequest 仮想関数をオーバーライドする以外に、 領域イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND]を定義・実装し レスポンダに登録して行うことも可能です。

最適な領域の計算は、最初に SFYWidget::HandleBoundRequest 仮想関数を実行し、 次に領域イベント専用ハンドラを登録した順に実行して行われます。

領域イベント専用ハンドラを宣言し登録する手間が省けるので、 通常は SFYWidget::HandleBoundRequest 仮想関数をオーバーライドして処理を記述します。

内部実装

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

/*protected virtual */Void SFYSingleTextWidget::HandleBoundRequest(SFXRectanglePtr rectangle) const
{
    rectangle->SetSize(_bound.GetSize());
    return;
}// SFYSingleTextWidget::HandleBoundRequest //

/*private */SInt16 SFYSingleTextWidget::Measure(Void)
{
    _bound.SetSize(SFXSize::ZeroInstance());
    _size.Set(SFXGraphics::MeasureSingleText(_font, " "), SFXGraphics::GetFontHeight(_font));
    if (!_text.IsEmpty()) {
        _bound.SetSize(SFXGraphics::MeasureSingleText(_font, _text), _size.GetHeight());
    }
    return _size.GetWidth();
}// SFYSingleTextWidget::Measure //

参照

SFYResponder::GetSuitableBound | SFYSingleTextWidget::SetText | SFYSingleTextWidget::SetFont | SFXGraphics::MeasureSingleText | SFXEvent | 実領域 | 領域イベント[SFEVT_RESPONDER_BOUND]


SFYSingleTextWidget::HandleBoundVirtual
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL) イベントを受信したときに呼び出される関数です (仮想領域が変化したときの処理を行います)。
[ protected, virtual ]
Void HandleBoundVirtual(Void);

解説

この関数は、領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL, rectangle)] を受信したときに呼び出されます。

仮想領域の変更時に追加の処理を行いたい場合は、この関数をオーバーライドします。

デフォルトの実装は、 仮想領域の変更に伴い水平方向と垂直方向のアライメントの設定に従って単一行テキストを再配置します。

単一行テキストの配置は、 SFYSingleTextWidget::SetHorizontalAlign 関数で水平方向のアライメント、 SFYSingleTextWidget::SetVerticalAlign 関数で垂直方向のアライメントを設定します。 デフォルトの設定では、水平方向、垂直方向ともに中央揃えのアライメントになります。

[Caution] 仮想領域

SFYSingleTextWidget クラスでは、 テキストの配置やスクロールを直感的に実現するために、 仮想領域実領域に合わせて使用することが推奨されます。

たとえば、

[仮想領域の横幅] ≧ [テキストの横幅] > [実領域の横幅]

の関係が成り立ちテキスト全体が画面に表示されないとき、 SFYSingleTextWidget::StartScroll 関数を呼び出してもスクロールは開始しません。

[Note] 領域イベント[(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL) イベント]

SFYResponder::SetRealBound / SFYResponder::SetVirtualBound 関数は、 この関数内の処理により仮想領域が変化すると、 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL, rectangle)] をレスポンダに送信します。

SFYWidget クラスを継承するレスポンダが領域イベントを受信すると、 SFYWidget::SFYWidget コンストラクタで最初に登録した領域イベント専用ハンドラの処理により、 SFYWidget::HandleBoundVirtual 仮想関数が呼び出されます。

※ 領域イベントの P32 パラメータ rectangle には変更後の仮想領域が設定されています。

[Note] 仮想領域の変更処理

SFYWidget::HandleBoundVirtual 仮想関数をオーバーライドする以外に、 領域イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND]を定義・実装し レスポンダに登録して行うことも可能です。

仮想領域の変更処理は、最初に SFYWidget::HandleBoundVirtual 仮想関数を実行し、 次に領域イベント専用ハンドラを登録した順に実行して行われます。

領域イベント専用ハンドラを宣言し登録する手間が省けるので、 通常は SFYWidget::HandleBoundVirtual 仮想関数をオーバーライドして処理を記述します。

内部実装

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

/*protected virtual */Void SFYSingleTextWidget::HandleBoundVirtual(Void)
{
    StateEnum                                   state;

    state = _state;
    StopScroll();
    Relocate();
    if (state != STATE_IDLE) {
        StartScroll();
    }
    return;
}// SFYSingleTextWidget::HandleBoundVirtual //

/*private */Void SFYSingleTextWidget::Relocate(Void)
{
    SFXRectangle                                lx;

    lx.Set(GetLocalBound());
    _bound.SetOrigin(lx.GetOrigin());
    _offset = 0;
    if (lx.GetWidth() > _bound.GetWidth()) {
        switch (_align.horizontal) {
            case HORIZONTAL_LEFT:
                _bound.AddX(0);
                break;
            case HORIZONTAL_RIGHT:
                _bound.AddX(lx.GetWidth() - _bound.GetWidth());
                break;
            case HORIZONTAL_CENTER:
            default:
                _bound.AddX((lx.GetWidth() - _bound.GetWidth()) / 2);
                break;
        }
    }
    else {
        switch (_align.horizontal) {
            case HORIZONTAL_LEFT:
                _offset += 0;
                break;
            case HORIZONTAL_RIGHT:
                _offset += lx.GetWidth() - _bound.GetWidth();
                break;
            case HORIZONTAL_CENTER:
            default:
                _offset += (lx.GetWidth() - _bound.GetWidth()) / 2;
                break;
        }
    }
    switch (_align.vertical) {
        case VERTICAL_TOP:
            _bound.AddY(0);
            break;
        case VERTICAL_BOTTOM:
            _bound.AddY(lx.GetHeight() - _bound.GetHeight());
            break;
        case VERTICAL_MIDDLE:
        default:
            _bound.AddY((lx.GetHeight() - _bound.GetHeight()) / 2);
            break;
    }
    _bound.AddY(SFXGraphics::GetFontDescent(_font) / 2);
    return;
}// SFYSingleTextWidget::Relocate //

参照

SFYSingleTextWidget::SetHorizontalAlign | SFYSingleTextWidget::SetVerticalAlign | SFYResponder::SetRealBound | SFYResponder::SetVirtualBound | 領域イベント[SFEVT_RESPONDER_BOUND] | 領域イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND] | 仮想領域 | 実領域 | ローカル領域


SFYSingleTextWidget::HandleRenderRequest
描画イベントを受信したときに呼び出される関数です(レスポンダを描画します)。
[ protected, virtual, const ]
Void HandleRenderRequest(
    SFXGraphicsPtr graphics   // グラフィックスオブジェクト
);

解説

この関数は、 描画イベント [SFXEvent(SFEVT_RESPONDER_RENDER, SFP16_RENDER_REQUEST, graphics)] を受信したときに呼び出されます。

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

デフォルトの実装は以下の通りです。

■テキスト、色、フォント

SFYSingleTextWidget::SetText 関数で設定したテキストを SFYSingleTextWidget::SetTextColor 関数で設定した色と SFYSingleTextWidget::SetFont 関数で設定したフォントを使用して描画します。

■アライメント

ローカル領域内での単一行テキストの配置は、 SFYSingleTextWidget::SetHorizontalAlign 関数で水平方向のアライメント、 SFYSingleTextWidget::SetVerticalAlign 関数で垂直方向のアライメントを設定します。 デフォルトの設定では、水平方向、垂直方向ともに中央揃えのアライメントになります。

■スクロール

テキストの矩形領域の横幅がローカル領域の横幅よりも大きいときに、 SFYSingleTextWidget::StartScroll 関数を呼び出すと、テキストはスクロールを開始します。

SFYSingleTextWidget::SetWaitInterval 関数でスクロール開始までの待ち時間、 SFYSingleTextWidget::SetScrollDirection 関数でスクロールの方向、 SFYSingleTextWidget::SetScrollStep 関数でスクロールステップ、 SFYSingleTextWidget::SetScrollInterval 関数でスクロールインターバルを設定します。

SFYSingleTextWidget::StopScroll 関数が呼ばれてスクロールを終えるまで、 時間の経過と共にこれらの関数で設定されたパラメータに応じて、 テキストの矩形領域を横にずらしてテキストを描画することにより横スクロールを実現しています(ただし、サスペンド中は横スクロールしません)。

[Caution] 仮想領域

SFYSingleTextWidget クラスでは、 テキストの配置やスクロールを直感的に実現するために、 仮想領域実領域に合わせて使用することが推奨されます。

たとえば、

[仮想領域の横幅] ≧ [テキストの横幅] > [実領域の横幅]

の関係が成り立ちテキスト全体が画面に表示されないとき、 SFYSingleTextWidget::StartScroll 関数を呼び出してもスクロールは開始しません。

[Note] レスポンダの描画手順

  1. SFYResponder::Invalidate 関数を使用して再描画領域を登録します。
  2. イベントループの最後、 アプリ開始/レジュームまたは優先的イベントハンドラ終了のタイミング、 あるいは、コールバックなどのイベントループの外で、 自動的に、あるいは、明示的に SFYResponder::Render 関数を呼び出します。
  3. 描画エンジンが起動されます。
  4. 再描画が必要なレスポンダだけが描画イベントを受信します。
  5. SFYWidget クラスを継承するレスポンダが描画イベントを受信すると、 SFYWidget::SFYWidget コンストラクタで最初に登録した描画ハンドラの処理により、 SFYWidget::HandleRenderRequest 仮想関数が呼び出されます。 その後、描画ハンドラが登録した順に呼び出されます。
  6. 実際にレスポンダが描画されます。

[Tip] Tip
描画ハンドラの宣言と登録の手間を省けるので、 通常は SFYWidget::HandleRenderRequest 仮想関数だけを利用してレスポンダを描画します。

内部実装

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

/*protected virtual */Void SFYSingleTextWidget::HandleRenderRequest(SFXGraphicsPtr graphics) const
{
    DrawText(graphics, _bound.GetOrigin());
    return;
}// SFYSingleTextWidget::HandleRenderRequest //

参照

SFYSingleTextWidget::SetText | SFYSingleTextWidget::SetHorizontalAlign | SFYSingleTextWidget::SetVerticalAlign | SFYSingleTextWidget::SetTextColor | SFYSingleTextWidget::SetFont | SFYResponder::Invalidate | SFYResponder::Render | SFYResponder::InvokeBackward | 描画イベント[SFEVT_RESPONDER_RENDER] | 描画イベント専用ハンドラ[XANDLER_DECLARE_VOIDRENDER] | 描画処理 | 仮想領域 | 実領域 | ローカル領域


SFYSingleTextWidget::NewInstance
新しいインスタンスを作成します。
[ public, static ]
SFYSingleTextWidgetSmp NewInstance(
    SFCErrorPtr exception = null   // エラー値
);

引数

exception

関数内部で発生したエラー値を返します。

戻り値

  • 成功したとき: null 以外のポインタ
  • 失敗したとき: null ポインタ

解説

この関数は、SFYSingleTextWidget クラスの新しいインスタンスを作成します。

インスタンスの作成に成功した場合は null 以外のポインタを返します。 失敗した場合は、null ポインタを返します。

exception 引数を指定した場合、 この引数にはエラー値が返ります。

使用例

以下は、単一行テキストウィジェットのインスタンスを生成するためのコードです。

// 単一行テキストウィジェットのインスタンスを生成する
SFCError error;
SFYSingleTextWidgetSmp _singletextwidget;

if ((_singletextwidget = SFYSingleTextWidget::NewInstance(&error)) != null) {
    // ...
}

SFYSingleTextWidget::SetFont
フォントを設定します。
[ public ]
Void SetFont(
    AEEFont param   // 設定する値
);

解説

この関数は、フォントを設定します。

デフォルト値: AEE_FONT_NORMAL

参照

SFYSingleTextWidget::GetFont | BREW API AEEFont


SFYSingleTextWidget::SetHorizontalAlign
水平アライメントを設定します。
[ public ]
Void SetHorizontalAlign(
    HorizontalEnum param   // 設定する値
);

解説

この関数は、水平アライメントを設定します。

デフォルト値: SFYSingleTextWidget::DEFAULT_HORIZONTAL

SFYSingleTextWidget::DEFAULT_HORIZONTAL の値は SFYSingleTextWidget::HorizontalEnum を参照してください。

参照

SFYSingleTextWidget::GetHorizontalAlign | SFYSingleTextWidget::HorizontalEnum


SFYSingleTextWidget::SetScrollDirection
スクロールの移動方向を設定します。
[ public ]
Void SetScrollDirection(
    DirectionEnum param   // 設定する値
);

解説

この関数は、スクロール移動方向を設定します。

デフォルト値: SFYSingleTextWidget::DEFAULT_DIRECTION

SFYSingleTextWidget::DEFAULT_DIRECTION の値は SFYSingleTextWidget::DirectionEnum を参照してください。

参照

SFYSingleTextWidget::GetScrollDirection | SFYSingleTextWidget::DirectionEnum


SFYSingleTextWidget::SetScrollInterval
スクロールインターバルを設定します。[単位:ミリ秒]
[ public ]
Void SetScrollInterval(
    UInt32 param   // 設定する値
);

解説

この関数は、スクロールインターバルを設定します。[単位:ミリ秒]

デフォルト値: SFYSingleTextWidget::DEFAULT_SCROLL ミリ秒

SFYSingleTextWidget::DEFAULT_SCROLL の値は SFYSingleTextWidget::DefaultEnum を参照してください。

参照

SFYSingleTextWidget::GetScrollInterval | SFYSingleTextWidget::DefaultEnum


SFYSingleTextWidget::SetScrollStep
スクロール移動量を設定します。[単位:ピクセル]
[ public ]
Void SetScrollStep(
    SInt16 param   // 設定する値
);

解説

この関数は、1 回のスクロールで移動するピクセル数を設定します。

−1(デフォルト値)を設定すると、使用しているフォントの半角空白文字 1 文字分(" ")の幅がスクロール移動量となります。

デフォルト値: SFYSingleTextWidget::DEFAULT_STEP [単位:ピクセル]

SFYSingleTextWidget::DEFAULT_STEP の値は SFYSingleTextWidget::DefaultEnum を参照してください。

参照

SFYSingleTextWidget::GetScrollStep | SFYSingleTextWidget::DefaultEnum


SFYSingleTextWidget::SetText
テキストを設定します。
[ public ]
SFCError SetText(
    SFXPathConstRef path   // リソースファイルパス
    UInt16 id              // リソース ID
);
[ public ]
SFCError SetText(
    SFXWideStringConstRef param   // 文字列
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

表示する文字列を設定します。

文字列を直接、あるいは、リソースファイルから読み込むように指定します。

参照

SFYSingleTextWidget::GetText | SFYSingleTextWidget::SetHorizontalAlign | SFYSingleTextWidget::SetVerticalAlign | SFYSingleTextWidget::SetTextColor | SFYSingleTextWidget::SetFont | BREW API AEEFont


SFYSingleTextWidget::SetTextColor
テキストの色を設定します。
[ public ]
Void SetTextColor(
    SFXRGBColorConstRef param   // 設定する値
);

解説

この関数は、テキストの色を設定します。

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

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

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

参照

SFYSingleTextWidget::GetTextColor | SFXRGBColor::GetBrightness | SFXRGBColor | 状態


SFYSingleTextWidget::SetVerticalAlign
垂直アライメントを設定します。
[ public ]
Void SetVerticalAlign(
    VerticalEnum param   // 設定する値
);

解説

この関数は、垂直アライメントを設定します。

デフォルト値: SFYSingleTextWidget::DEFAULT_VERTICAL

SFYSingleTextWidget::DEFAULT_VERTICAL の値は SFYSingleTextWidget::VerticalEnum を参照してください。

参照

SFYSingleTextWidget::GetVerticalAlign | SFYSingleTextWidget::VerticalEnum


SFYSingleTextWidget::SetWaitInterval
スクロール開始までの待ち時間を設定します。[単位:ミリ秒]
[ public ]
Void SetWaitInterval(
    UInt32 param   // 設定する値
);

解説

デフォルト値: SFYSingleTextWidget::DEFAULT_SCROLL ミリ秒

SFYSingleTextWidget::DEFAULT_SCROLL の値は SFYSingleTextWidget::DefaultEnum を参照してください。

参照

SFYSingleTextWidget::GetWaitInterval | SFYSingleTextWidget::DefaultEnum


SFYSingleTextWidget::StartScroll
テキストのスクロールを開始します。
[ public ]
Void StartScroll(Void);

解説

この関数は、テキストのスクロールを開始します。

仮想領域の幅がテキストの幅よりも大きいときは何もしません。

SFEVT_APP_SUSPEND イベントと SFEVT_APP_RESUME イベントに自動的に応答しますが、 SFEVT_APP_SUSPEND イベントの受信後から SFEVT_APP_RESUME イベントの受信までの間にこの関数を呼び出したときの動作は未定です。

参照

SFYSingleTextWidget::StopScroll


SFYSingleTextWidget::StopScroll
テキストのスクロールを停止します。
[ public ]
Void StopScroll(Void);

解説

この関数は、テキストのスクロールを停止します。

参照

SFYSingleTextWidget::StartScroll


SFYSingleTextWidget::CodeEnum
SFYSingleTextWidget クラスを表す定数です。
enum CodeEnum {
    CODE_TYPE = four_char_code('+', 's', 't', 'x')
};
SFMTYPEDEFTYPE(CodeEnum)

参照

SFYResponder::GetType | SFYResponder::SetType


SFYSingleTextWidget::DefaultEnum
各種パラメータのデフォルト値を表します。
enum DefaultEnum {
    DEFAULT_WAIT   = 1000,    // スクロール開始までの待ち時間(単位:ミリ秒)
    DEFAULT_SCROLL = 100,     // スクロールインターバル(単位:ミリ秒)
    DEFAULT_STEP   = -1       // スクロール移動量(単位:ピクセル)[ −1 の場合は使用しているフォントの半角空白文字(" ")一文字分の横幅になる]
};
SFMTYPEDEFTYPE(DefaultEnum)

解説

DEFAULT_STEP は、1回のスクロールで移動するピクセル数を設定します。 −1(デフォルト値)を設定すると、使用しているフォントの半角空白文字1文字分(" ")の幅がスクロール移動量となります。


SFYSingleTextWidget::DirectionEnum
スクロールの移動方向を表します。
enum DirectionEnum {
    DIRECTION_LEFT    = 0,                // 左へスクロール
    DIRECTION_RIGHT,                      // 右へスクロール
    DEFAULT_DIRECTION = DIRECTION_LEFT    // デフォルト値: 左へスクロール
};
SFMTYPEDEFTYPE(DirectionEnum)

SFYSingleTextWidget::HorizontalEnum
水平方向のアライメントを表す定数です。
enum HorizontalEnum {
    HORIZONTAL_LEFT     = 0,                 // 左詰め
    HORIZONTAL_CENTER,                       // 中央揃え
    HORIZONTAL_RIGHT,                        // 右詰め
    DEFAULT_HORIZONTAL  = HORIZONTAL_CENTER  // デフォルト設定: 中央揃え
};
SFMTYPEDEFTYPE(HorizontalEnum)

解説

水平方向のアライメントについて:

  1. 左詰めの場合 : テキストの矩形領域の左辺をローカル領域の左辺に一致させます。
  2. 中央揃えの場合 : テキストの矩形領域の垂直方向の中線をローカル領域の垂直方向の中線に一致させます。
  3. 右詰めの場合 : テキストの矩形領域の右辺をローカル領域の右辺に一致させます。

参照

SFYSingleTextWidget::SetHorizontalAlign | ローカル領域


SFYSingleTextWidget::VerticalEnum
垂直方向のアライメントを表す定数です。
enum VerticalEnum {
    VERTICAL_TOP      = 0,               // 上詰め
    VERTICAL_MIDDLE,                     // 中央揃え
    VERTICAL_BOTTOM,                     // 下詰め
    DEFAULT_VERTICAL  = VERTICAL_MIDDLE  // デフォルト値: 中央揃え
};
SFMTYPEDEFTYPE(VerticalEnum)

解説

垂直方向のアライメントについて:

  1. 上詰めの場合 : テキストの矩形領域の上辺をローカル領域の上辺に一致させます。
  2. 中央揃えの場合 : テキストの矩形領域の水平方向の中線をローカル領域の水平方向の中線に一致させます。
  3. 下詰めの場合 : テキストの矩形領域の下辺をローカル領域の下辺に一致させます。

参照

SFYSingleTextWidget::SetVerticalAlign | ローカル領域