07-12-2013, 01:21 PM
07-17-2013, 04:39 PM
Curl のIDE ドキュメントで、プロパティなどを表示するテキストで同機能が実装されていますね。
インスペクトしてみると、HackEllipsisTextGraphic というクラスがあるようですが、
hidden アクセサで定義されているので使えません。
その継承もとの LightWeightTextGraphic などが公開されるとうれしいのですが・・・。
インスペクトしてみると、HackEllipsisTextGraphic というクラスがあるようですが、
hidden アクセサで定義されているので使えません。
その継承もとの LightWeightTextGraphic などが公開されるとうれしいのですが・・・。
07-17-2013, 05:11 PM
とりあえず、こんな実装なのかな、という想像です。
Code:
{define-class public CustomTextFrame {inherits HBox}
field tfb:TextFlowBox
field sufix-text:Frame = {Frame}
field cut?:bool = false
{constructor public {default ...}
set self.tfb = {DefaultTextFlowBox {splice ...}}
set self.tfb.height= self.tfb.font-size + 1pt
{construct-super
height= self.tfb.font-size + 1pt,
self.tfb,
self.sufix-text
}
}
{method public {set-size lc:LayoutContext, bounds:GRect}:void
def font-w = {self.calc-text-width self.tfb, {self.tfb.get-text} }
{if font-w > bounds.width then
{if not self.cut? then
set self.cut? = true
{self.sufix-text.add replace? = true, "..."}
}
else
set self.cut? = false
{self.sufix-text.clear}
}
{super.set-size lc, bounds}
}
{method {calc-text-width fr:Graphic, txt:String }:FloatDistance
def font = {Font
fr.font-family,
fr.font-size * 1pt,
weight = fr.font-weight,
style = fr.font-style
}
def d =
{fr.display-context.get-string-advance-width
font,
txt
}
{return d}
}
}
{CustomTextFrame "あいうえおかきくけこさしすせそたちつてと"}