SophiaFramework UNIVERSE 5.3 |
#include <SFYSingleTextWidget.h.hpp>
class SFYSingleTextWidget : public SFYWidget;
SFMTYPEDEFCLASS(SFYSingleTextWidget)
■ 仕様と使い方
SFYSingleTextWidget は、単一行のテキストの描画に必要な機能だけが実装されているレスポンダです。 通常、単一行のテキストを扱うレスポンダで内部的に保持する子レスポンダとして使います。
たとえば、SFYSingleTextWidget は SFZTextButtonControl、 SFZSingleTextLabelControl、 SFZSingleTextBoxControl などの単一行のテキストを扱うコントロールの子レスポンダとして内部的に利用されます。
単一行のテキストを描画するこれらのコントロールでは、 単一行のテキストの設定、色の設定、フォントの設定、配置、スクロールなどの処理はすべて SFYSingleTextWidget に委譲して行われます。
単一行のテキストを描画する必要がある場合、SFYSingleTextWidget を利用すれば、 その処理を記述することなく簡単に実装することが可能です。 また、SFYSingleTextWidget に単一行のテキストの描画処理が一元化されるので保守性の優れたコードになります。
使用するときの状態の値 | |
---|---|
このクラスを利用するときは、 可視状態:ON、活性状態:ON、操作可能状態:OFF、フォーカス状態:OFF の状態に設定します。 通常、このクラスはキーイベントに応答しないクラスとして使用します。 |
透過属性のデフォルト値 | |
---|---|
このクラスの透過属性のデフォルト値は true なので、 SFYResponder::SetPropertyTransparent 関数で透過属性を false に設定しない限り、 SFYWidget::SetBackgroundColor 関数で設定した色で背景が塗り潰されることはありません。 |
仮想領域 | |
---|---|
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 垂直方向のアライメントを表す定数です。
|
[ protected, explicit ] SFYSingleTextWidget(Void);
このコンストラクタは、以下の初期化処理を行います。
表 248. イベントハンドラ
イベント | ハンドラの内容 |
---|---|
アプリ中断イベント[SFEVT_APP_SUSPEND] | テキストをスクロールするためのタイマー処理をキャンセルします。 |
アプリ再開イベント[SFEVT_APP_RESUME] | テキストをスクロールするためのタイマー処理を再開します。 |
注意 | |
---|---|
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]
[ protected, virtual ] virtual ~SFYSingleTextWidget(Void);
このデストラクタは、テキストのスクロールを停止します。
このデストラクタの内部実装は以下の通りです。
/*protected virtual */SFYSingleTextWidget::~SFYSingleTextWidget(Void) { StopScroll(); }// SFYSingleTextWidget::~SFYSingleTextWidget //
[ protected, const ] Void DrawText( SFXGraphicsPtr graphics // グラフィックスオブジェクト SFXGridConstRef grid // 左上の座標 );
複数行のテキストを描画します。
独自の処理を行う場合は、この関数をオーバーライドします。
注意 | |
---|---|
この関数は 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 //
[ public, const ] AEEFont GetFont(Void);
フォント。
この関数は、フォントを取得します。
[ public, const ] SFXSizeConstRef GetFontSize(Void);
フォントの大きさ。
この関数は、フォントの大きさを取得します。
設定されているフォントの半角 1 文字分(' ' で計算)の大きさを取得します。
[ public, const ] HorizontalEnum GetHorizontalAlign(Void);
水平アライメントの値。
この関数は、水平アライメントの値を取得します。
[ public, const ] DirectionEnum GetScrollDirection(Void);
スクロールの移動方向。
この関数は、スクロールの移動方向を取得します。
[ public, const ] UInt32 GetScrollInterval(Void);
スクロールインターバル。[単位:ミリ秒]
この関数は、スクロールインターバルを取得します。[単位:ミリ秒]
[ protected, const ] SInt16 GetScrollOffset(Void);
スクロールオフセットの値。
この関数は、スクロールの結果による始点からのオフセットを取得します。
[ public, const ] SInt16 GetScrollStep(Void);
スクロール移動量。[単位:ピクセル]
この関数は、スクロール移動量を取得します。[単位:ピクセル]
[ public, const ] SFXWideStringConstRef GetText(Void);
テキスト。
この関数は、テキストを取得します。
[ public, const ] SFXRGBColorConstRef GetTextColor(Void);
テキストの色。
この関数は、テキストの色を取得します。
[ protected, const ] SFXGridConstRef GetTextOrigin(Void);
テキスト領域の始点。
この関数は、テキスト領域の始点を取得します。
[ public, const ] SFXSizeConstRef GetTextSize(Void);
設定されているフォントで描画した場合のテキストの大きさを取得します。
[ public, const ] VerticalEnum GetVerticalAlign(Void);
垂直アライメントの値。
この関数は、垂直アライメントの値を取得します。
[ public, const ] UInt32 GetWaitInterval(Void);
スクロール開始までの待ち時間。[単位:ミリ秒]
この関数は、スクロール開始までの待ち時間を取得します。[単位:ミリ秒]
[ protected, virtual, const ] Void HandleBoundOptimize( SFXRectanglePtr rectangle // 矩形 );
この関数は、 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE, rectangle)] を受信したときに呼び出されます。
引数 rectangle で指定した矩形領域に収まる範囲内で、レスポンダの最適な領域を計算します。
計算結果のレスポンダに最適なサイズは、rectangle 引数の size 要素(サイズ)に格納されます。 なお、領域イベントの P32 パラメータとして渡された rectangle 引数の origin 要素(始点)はこの関数内で変更しないことを推奨します。
デフォルトの実装は、以下のサイズを返します。
ここで、w、h、sw、sh、fw、fh は以下のように定義されます。
単一行テキストのサイズ : sw の計算方法 | |
---|---|
単一行テキストのサイズは、 SFYSingleTextWidget::SetFont 関数で設定したフォント、 SFYSingleTextWidget::SetText 関数で設定したテキストの内容から SFXGraphics::MeasureSingleText 関数を使用して計算します。 |
領域イベント[(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE) イベント] | |
---|---|
SFYResponder::GetSuitableBound 関数は、 引数にヒント領域を指定した場合は 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE, rectangle)] をレスポンダに送信します。 SFYWidget クラスを継承するレスポンダが領域イベントを受信すると、 SFYWidget::SFYWidget コンストラクタで最初に登録した領域イベント専用ハンドラの処理により、 SFYWidget::HandleBoundOptimize 仮想関数が呼び出されます。 ※ 領域イベントの P32 パラメータ rectangle にはヒント領域が初期設定されています。 |
(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]
[ protected, virtual ] Void HandleBoundReal(Void);
この関数は、領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL, rectangle)] を受信したときに呼び出されます。
実領域の変更時に追加の処理を行いたい場合は、この関数をオーバーライドします。
デフォルトの実装は、仮想領域を実領域に一致させます。
仮想領域 | |
---|---|
SFYSingleTextWidget クラスでは、 テキストの配置やスクロールを直感的に実現するために、 仮想領域を実領域に合わせて使用することが推奨されます。 たとえば、 [仮想領域の横幅] ≧ [テキストの横幅] > [実領域の横幅] の関係が成り立ちテキスト全体が画面に表示されないとき、 SFYSingleTextWidget::StartScroll 関数を呼び出してもスクロールは開始しません。 |
領域イベント[(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベント] | |
---|---|
SFYResponder::SetRealBound 関数は、この関数内の処理により実領域が変化すると、 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL, rectangle)] をレスポンダに送信します。 SFYWidget クラスを継承するレスポンダが領域イベントを受信すると、 SFYWidget::SFYWidget コンストラクタで最初に登録した領域イベント専用ハンドラの処理により、 SFYWidget::HandleBoundReal 仮想関数が呼び出されます。 ※ 領域イベントの P32 パラメータ rectangle には変更後の実領域が設定されています。 |
実領域が変化した時の処理 | |
---|---|
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] | 仮想領域 | 実領域 | ローカル領域
[ 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 関数を使用して計算します。
領域イベント[(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベント] | |||||
---|---|---|---|---|---|
SFYResponder::GetSuitableBound 関数は、 引数に何も指定しない場合は 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST, rectangle)] をレスポンダに送信します。 SFYWidget クラスを継承するレスポンダが領域イベントを受信すると、 SFYWidget::SFYWidget コンストラクタで最初に登録した領域イベント専用ハンドラの処理により、 SFYWidget::HandleBoundRequest 仮想関数が呼び出されます。 ※ 領域イベントの P32 パラメータ rectangle には実領域が初期設定されています。
|
(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]
[ protected, virtual ] Void HandleBoundVirtual(Void);
この関数は、領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL, rectangle)] を受信したときに呼び出されます。
仮想領域の変更時に追加の処理を行いたい場合は、この関数をオーバーライドします。
デフォルトの実装は、 仮想領域の変更に伴い水平方向と垂直方向のアライメントの設定に従って単一行テキストを再配置します。
単一行テキストの配置は、 SFYSingleTextWidget::SetHorizontalAlign 関数で水平方向のアライメント、 SFYSingleTextWidget::SetVerticalAlign 関数で垂直方向のアライメントを設定します。 デフォルトの設定では、水平方向、垂直方向ともに中央揃えのアライメントになります。
仮想領域 | |
---|---|
SFYSingleTextWidget クラスでは、 テキストの配置やスクロールを直感的に実現するために、 仮想領域を実領域に合わせて使用することが推奨されます。 たとえば、 [仮想領域の横幅] ≧ [テキストの横幅] > [実領域の横幅] の関係が成り立ちテキスト全体が画面に表示されないとき、 SFYSingleTextWidget::StartScroll 関数を呼び出してもスクロールは開始しません。 |
領域イベント[(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 には変更後の仮想領域が設定されています。 |
仮想領域の変更処理 | |
---|---|
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] | 仮想領域 | 実領域 | ローカル領域
[ 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 関数が呼ばれてスクロールを終えるまで、 時間の経過と共にこれらの関数で設定されたパラメータに応じて、 テキストの矩形領域を横にずらしてテキストを描画することにより横スクロールを実現しています(ただし、サスペンド中は横スクロールしません)。
仮想領域 | |
---|---|
SFYSingleTextWidget クラスでは、 テキストの配置やスクロールを直感的に実現するために、 仮想領域を実領域に合わせて使用することが推奨されます。 たとえば、 [仮想領域の横幅] ≧ [テキストの横幅] > [実領域の横幅] の関係が成り立ちテキスト全体が画面に表示されないとき、 SFYSingleTextWidget::StartScroll 関数を呼び出してもスクロールは開始しません。 |
レスポンダの描画手順 | |||||
---|---|---|---|---|---|
|
この関数の内部実装は以下の通りです。
/*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] | 描画処理 | 仮想領域 | 実領域 | ローカル領域
[ public, static ] SFYSingleTextWidgetSmp NewInstance( SFCErrorPtr exception = null // エラー値 );
関数内部で発生したエラー値を返します。
この関数は、SFYSingleTextWidget クラスの新しいインスタンスを作成します。
インスタンスの作成に成功した場合は null 以外のポインタを返します。 失敗した場合は、null ポインタを返します。
exception 引数を指定した場合、 この引数にはエラー値が返ります。
以下は、単一行テキストウィジェットのインスタンスを生成するためのコードです。
// 単一行テキストウィジェットのインスタンスを生成する SFCError error; SFYSingleTextWidgetSmp _singletextwidget; if ((_singletextwidget = SFYSingleTextWidget::NewInstance(&error)) != null) { // ... }
この関数は、フォントを設定します。
デフォルト値: AEE_FONT_NORMAL
[ public ] Void SetHorizontalAlign( HorizontalEnum param // 設定する値 );
この関数は、水平アライメントを設定します。
デフォルト値: SFYSingleTextWidget::DEFAULT_HORIZONTAL
SFYSingleTextWidget::DEFAULT_HORIZONTAL の値は SFYSingleTextWidget::HorizontalEnum を参照してください。
[ public ] Void SetScrollDirection( DirectionEnum param // 設定する値 );
この関数は、スクロール移動方向を設定します。
デフォルト値: SFYSingleTextWidget::DEFAULT_DIRECTION
SFYSingleTextWidget::DEFAULT_DIRECTION の値は SFYSingleTextWidget::DirectionEnum を参照してください。
この関数は、スクロールインターバルを設定します。[単位:ミリ秒]
デフォルト値: SFYSingleTextWidget::DEFAULT_SCROLL ミリ秒
SFYSingleTextWidget::DEFAULT_SCROLL の値は SFYSingleTextWidget::DefaultEnum を参照してください。
この関数は、1 回のスクロールで移動するピクセル数を設定します。
−1(デフォルト値)を設定すると、使用しているフォントの半角空白文字 1 文字分(" ")の幅がスクロール移動量となります。
デフォルト値: SFYSingleTextWidget::DEFAULT_STEP [単位:ピクセル]
SFYSingleTextWidget::DEFAULT_STEP の値は SFYSingleTextWidget::DefaultEnum を参照してください。
[ public ] SFCError SetText( SFXPathConstRef path // リソースファイルパス UInt16 id // リソース ID );
[ public ] SFCError SetText( SFXWideStringConstRef param // 文字列 );
表示する文字列を設定します。
文字列を直接、あるいは、リソースファイルから読み込むように指定します。
SFYSingleTextWidget::GetText | SFYSingleTextWidget::SetHorizontalAlign | SFYSingleTextWidget::SetVerticalAlign | SFYSingleTextWidget::SetTextColor | SFYSingleTextWidget::SetFont | BREW API AEEFont
[ public ] Void SetTextColor( SFXRGBColorConstRef param // 設定する値 );
この関数は、テキストの色を設定します。
デフォルト値: SFXRGBColor(0x00, 0x00, 0x00, 0x00)[黒色]
非活性状態にあるときは、この関数で設定された色の明度が 0x7F より大きい場合はこの色の RGB 値からそれぞれ 0x44 を減算した色、 0x7F 以下の場合はこの色の RGB 値にそれぞれ 0x44 を加算した色でテキストは描画されます。
色の明度とは、SFXRGBColor::GetBrightness 関数によって得られる値です。
[ public ] Void SetVerticalAlign( VerticalEnum param // 設定する値 );
この関数は、垂直アライメントを設定します。
デフォルト値: SFYSingleTextWidget::DEFAULT_VERTICAL
SFYSingleTextWidget::DEFAULT_VERTICAL の値は SFYSingleTextWidget::VerticalEnum を参照してください。
デフォルト値: SFYSingleTextWidget::DEFAULT_SCROLL ミリ秒
SFYSingleTextWidget::DEFAULT_SCROLL の値は SFYSingleTextWidget::DefaultEnum を参照してください。
[ public ] Void StartScroll(Void);
この関数は、テキストのスクロールを開始します。
仮想領域の幅がテキストの幅よりも大きいときは何もしません。
SFEVT_APP_SUSPEND イベントと SFEVT_APP_RESUME イベントに自動的に応答しますが、 SFEVT_APP_SUSPEND イベントの受信後から SFEVT_APP_RESUME イベントの受信までの間にこの関数を呼び出したときの動作は未定です。
[ public ] Void StopScroll(Void);
この関数は、テキストのスクロールを停止します。
enum CodeEnum { CODE_TYPE = four_char_code('+', 's', 't', 'x') }; SFMTYPEDEFTYPE(CodeEnum)
enum DefaultEnum { DEFAULT_WAIT = 1000, // スクロール開始までの待ち時間(単位:ミリ秒) DEFAULT_SCROLL = 100, // スクロールインターバル(単位:ミリ秒) DEFAULT_STEP = -1 // スクロール移動量(単位:ピクセル)[ −1 の場合は使用しているフォントの半角空白文字(" ")一文字分の横幅になる] }; SFMTYPEDEFTYPE(DefaultEnum)
DEFAULT_STEP は、1回のスクロールで移動するピクセル数を設定します。 −1(デフォルト値)を設定すると、使用しているフォントの半角空白文字1文字分(" ")の幅がスクロール移動量となります。
enum DirectionEnum { DIRECTION_LEFT = 0, // 左へスクロール DIRECTION_RIGHT, // 右へスクロール DEFAULT_DIRECTION = DIRECTION_LEFT // デフォルト値: 左へスクロール }; SFMTYPEDEFTYPE(DirectionEnum)
enum HorizontalEnum { HORIZONTAL_LEFT = 0, // 左詰め HORIZONTAL_CENTER, // 中央揃え HORIZONTAL_RIGHT, // 右詰め DEFAULT_HORIZONTAL = HORIZONTAL_CENTER // デフォルト設定: 中央揃え }; SFMTYPEDEFTYPE(HorizontalEnum)
水平方向のアライメントについて:
enum VerticalEnum { VERTICAL_TOP = 0, // 上詰め VERTICAL_MIDDLE, // 中央揃え VERTICAL_BOTTOM, // 下詰め DEFAULT_VERTICAL = VERTICAL_MIDDLE // デフォルト値: 中央揃え }; SFMTYPEDEFTYPE(VerticalEnum)
垂直方向のアライメントについて:
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |