Lumino
ln::UIIcon Class Reference

アイコンの UI 要素です。 More...

#include <UIIcon.hpp>

Inheritance diagram for ln::UIIcon:
ln::UIElement

Static Public Member Functions

static Ref< UIIconloadFontIcon (const StringRef &iconName)
 アイコン名を指定して UIIcon を作成します。
 
static Ref< UIIconloadFontIcon (const StringRef &iconName, int size)
 アイコン名・サイズ を指定して UIIcon を作成します。
 
static Ref< UIIconloadFontIcon (const StringRef &iconName, int size, const Color &color)
 アイコン名・サイズ・色 (TextColor) を指定して UIIcon を作成します。
 

Protected Member Functions

virtual Size measureOverride (UILayoutContext *layoutContext, const Size &constraint) override
 この要素を表示するために必要なサイズを計測します。 [in] constraint : この要素を配置できる領域の最大サイズ。通常は親要素のサイズが渡されます。 More...
 
virtual void onRender (UIRenderingContext *context) override
 この要素内の子ビジュアル要素の数を取得します。 More...
 

Additional Inherited Members

- Public Member Functions inherited from ln::UIElement
void setSize (const Size &size)
 要素のサイズを設定します。サイズには、border と padding の幅と高さは含まれません。(例:width 10, border 10 とすると、要素の最終サイズは 20 となります)
 
void setSize (float width, float height)
 要素のサイズを設定します。サイズには、border と padding の幅と高さは含まれません。(例:width 10, border 10 とすると、要素の最終サイズは 20 となります)
 
void setWidth (float value)
 setWidth
 
float width () const
 width
 
void setHeight (float value)
 setHeight
 
float height () const
 height
 
void setMargin (const Thickness &margin)
 要素の margin 値 (外側の余白) を設定します。
 
const Thicknessmargin () const
 要素の margin 値 (外側の余白) を取得します。
 
void setPadding (const Thickness &padding)
 要素の padding 値 (内側の余白) を設定します。この余白は論理ツリーの子要素のレイアウトに影響します。
 
const Thicknesspadding () const
 要素の padding 値 (内側の余白) を取得します。この余白は論理ツリーの子要素のレイアウトに影響します。
 
void setHAlignment (UIHAlignment value)
 要素の横方向の配置方法を設定します。
 
UIHAlignment hAlignment () const
 要素の横方向の配置方法を取得します。
 
void setVAlignment (UIVAlignment value)
 要素の縦方向の配置方法を設定します。
 
UIVAlignment vAlignment () const
 要素の縦方向の配置方法を取得します。
 
void setAlignments (UIHAlignment halign, UIVAlignment valign)
 要素の配置方法を設定します。
 
void setPosition (const Vector3 &pos)
 このオブジェクトの位置を設定します。
 
void setPosition (float x, float y, float z=0.0f)
 このオブジェクトの位置を設定します。
 
const Vector3position () const
 このオブジェクトの位置を位置を取得します。
 
void setRotation (const Quaternion &rot)
 このオブジェクトの回転を設定します。
 
void setEulerAngles (float x, float y, float z)
 このオブジェクトの回転をオイラー角から設定します。(radian)
 
const Quaternionrotation () const
 このオブジェクトの回転を取得します。
 
void setScale (const Vector3 &scale)
 このオブジェクトの拡大率を設定します。
 
void setScale (float xyz)
 このオブジェクトの拡大率を設定します。
 
void setScale (float x, float y)
 このオブジェクトの拡大率を設定します。
 
const Vector3scale () const
 このオブジェクトの拡大率を取得します。
 
void setCenterPoint (const Vector3 &value)
 このオブジェクトのローカルの中心位置を設定します。
 
void setCenterPoint (float x, float y, float z=0.0f)
 このオブジェクトのローカルの中心位置を設定します。
 
const Vector3centerPoint () const
 このオブジェクトのローカルの中心位置を取得します。
 
void setEnabled (bool value)
 要素の有効状態を設定します。
 
bool isEnabled () const
 要素の有効状態を取得します。
 
void setData (Variant *value)
 任意のユーザーデータを設定します。
 
Variantdata () const
 任意のユーザーデータを取得します。
 
void setBackgroundDrawMode (Sprite9DrawMode value)
 背景の描画モードを設定します。
 
Sprite9DrawMode backgroundDrawMode () const
 背景の描画モードを取得します。
 
void setBackgroundColor (const Color &value)
 背景の色を設定します。
 
const ColorbackgroundColor () const
 背景の色を取得します。
 
void setBackgroundImage (Texture *value)
 背景の描画に使用する画像を設定します。
 
TexturebackgroundImage () const
 背景の描画に使用する画像を取得します。
 
void setBackgroundShader (Shader *value)
 背景の描画に使用するシェーダを設定します。
 
ShaderbackgroundShader () const
 背景の描画に使用するシェーダを取得します。
 
void setBackgroundImageRect (const Rect &value)
 背景の描画に使用する画像の転送元の範囲を示す矩形を設定します。(Unit: px)
 
const RectbackgroundImageRect () const
 背景の描画に使用する画像の転送元の範囲を示す矩形を取得します。(Unit: px)
 
void setBackgroundImageBorder (const Thickness &value)
 背景の描画モードが BoxFrame である場合に参照される、転送元の枠の太さを設定します。(Unit: px)
 
const ThicknessbackgroundImageBorder () const
 背景の描画モードが BoxFrame である場合に参照される、転送元の枠の太さを取得します。(Unit: px)
 
void setBorderThickness (const Thickness &value)
 枠線の太さを設定します。
 
const ThicknessborderThickness () const
 枠線の太さを取得します。
 
void setBorderColor (const Color &value)
 枠線の色を設定します。
 
const ColorborderColor () const
 枠線の色を取得します。
 
void setCornerRadius (const CornerRadius &value)
 四角形の角の半径を設定します。
 
const CornerRadiuscornerRadius () const
 四角形の角の半径を取得します。
 
void setTextColor (const Color &value)
 テキストの色を設定します。
 
const ColortextColor () const
 テキストの色を取得します。
 
void setFontFamily (const String &value)
 フォントファミリ名を設定します。
 
const StringfontFamily () const
 フォントファミリ名を取得します。
 
void setFontSize (float value)
 フォントサイズを設定します。
 
float fontSize () const
 フォントサイズを取得します。
 
void setFontWeight (UIFontWeight value)
 フォントの太さを設定します。
 
UIFontWeight fontWeight () const
 フォントの太さを取得します。
 
void setFontStyle (UIFontStyle value)
 フォントのスタイルを設定します。
 
UIFontStyle fontStyle () const
 フォントのスタイルを取得します。
 
void setVisibility (UIVisibility value)
 可視状態を設定します。(default: UIVisibility::Visible)
 
UIVisibility visibility () const
 可視状態を取得します。
 
void setBlendMode (const Optional< BlendMode > &value)
 合成方法を設定します。(default: BlendMode::Normal)
 
BlendMode blendMode () const
 合成方法を取得します。
 
void setOpacity (float value)
 不透明度を設定します。(default: 1.0)
 
float opacity () const
 不透明度を取得します。
 
void setColorScale (const Color &value)
 カラースケールを設定します。(default: Color(1, 1, 1, 1))
 
const ColorcolorScale () const
 カラースケールを取得します。
 
void setBlendColor (const Color &value)
 ブレンドカラーを設定します。(default: Color(0, 0, 0, 0))
 
const ColorblendColor () const
 ブレンドカラーを取得します。
 
void setTone (const ColorTone &value)
 色調を設定します。(default: Tone(0, 0, 0, 0))
 
const ColorTonetone () const
 色調を取得します。
 
void addChild (UIElement *child)
 Add element to container. More...
 
void setFocusable (bool value)
 入力フォーカスを得ることができるかどうかを設定します。(default: false)
 
bool focusable () const
 入力フォーカスを得ることができるかどうかを取得します。
 
void addInto (UIElement *parent=nullptr)
 ウィンドウを前面にしてアクティブ化することを試みます。 More...
 
virtual Size arrangeOverride (UILayoutContext *layoutContext, const Rect &finalArea) override
 Visual 子要素の配置を確定し、この要素の最終サイズを返します。 More...
 

Detailed Description

アイコンの UI 要素です。

フォントアイコンを使用する場合、要素のサイズは フォントの Global metrix の行間サイズをベースとする正方形となります。 グリフの境界ボックスではありません。 このためグリフが異なっていても、フォントサイズが同一であれば UIIcon としてのサイズは同一となります。

Member Function Documentation

◆ measureOverride()

virtual Size ln::UIIcon::measureOverride ( UILayoutContext *  layoutContext,
const Size constraint 
)
overrideprotectedvirtual

この要素を表示するために必要なサイズを計測します。 [in] constraint : この要素を配置できる領域の最大サイズ。通常は親要素のサイズが渡されます。

Returns
この要素のレイアウトの際に必要となる最低限のサイズ。 この要素のサイズと、全ての子要素のサイズに基づき決定します。NaN や Inf であってはなりません。

constraint は、ScrollViewer 等のコンテンツとなった場合は Infinity が渡されることがあります。

このメソッドはフレームワークから呼び出されます。直接呼び出しても正しい結果は得られません。 このメソッドの実装から子要素の measure を行う場合は measureLayout() を呼び出します。

複数の子要素を並べてレイアウトしたい場合、サイズの合計を返します。 例えば 2 つの UIText を縦に並べる場合は、2つの measureLayout() の結果について、

  • width は 大きい方を返す
  • height は 2 つの合計を返す

constraint に padding と border は含まれていません。 通常、padding と border を加算したサイズを返すように実装します。 border については、inset または outset の場合分けが必要です。

Note
  • レイアウトのコツとしては、constraint から減算するのではなく、子要素を加算してくこと。constraint は Inf が含まれることがある。
  • 実装では padding と border のサイズを考慮する必要があるが、これは VisualChild をレイアウトしてほしいためこうする必要がある。(LogicalChild ではなく)

Reimplemented from ln::UIElement.

◆ onRender()

virtual void ln::UIIcon::onRender ( UIRenderingContext *  context)
overrideprotectedvirtual

この要素内の子ビジュアル要素の数を取得します。

子ビジュアル要素を取得します。

装側は、奥にある要素が先、手前にある要素が後になるようにZオーダーやアクティブ状態を考慮する必要があります。 Note: Border は含まない描画領域をアクティブとしている。HTML5 とは異なり、WPF と同じ仕様。0,0はBorderと重なる。

  • マウス座標系は、UIElement の境界座標系 (Border の外周) としたい。MouseEvent で、座標に負値が入ってくるのはちょっと良くない。HitTest するときに細工とか必要。
    • 実際のところ、onRender を実装することよりも MouseEvent を利用することの方が圧倒的に多い。(見た目のカスタマイズはほとんど style で足りる)
  • 描画座標系は、UIElement の境界にするかコンテンツ矩形にするかは悩みどころだけど、実際にやってみたところ境界座標系に合わせる方が都合が良いことが多かった。
    • clientRect() や contentRect() と同じ座標系なので、「Padding を考慮したところに描画したい」といった指定が比較的楽。
      • コンテンツ矩形とかにしてしまうと、clientRect() や contentRect() から領域を取り出すにしても一段計算を挟む必要がある。
    • (0,0) が Border の上に乗ってしまうことは最初「ん?」ってなるかもしれないけど、結果として実装がやりやすくなるので境界領域を使ってみる。

Reimplemented from ln::UIElement.


The documentation for this class was generated from the following file: