2017-05-29 7:07 GMT+02:00 Daniel Hirt <hirt.da...@gmail.com>: > Hello, > > On Mon, May 29, 2017 at 7:16 AM, Jean-Philippe André <j...@videolan.org> > wrote: > >> On 29 May 2017 at 05:18, Davide Andreoli <d...@gurumeditation.it> wrote: >> >> > 2017-05-28 15:00 GMT+02:00 Daniel Hirt <hirt.da...@gmail.com>: >> > > herdsman pushed a commit to branch master. >> > > >> > > http://git.enlightenment.org/core/efl.git/commit/?id= >> > da2ef30f2b4d53aa3c1658b83c8c8381743469a0 >> > > >> > > commit da2ef30f2b4d53aa3c1658b83c8c8381743469a0 >> > > Author: Daniel Hirt <hirt.da...@gmail.com> >> > > Date: Mon May 22 17:36:41 2017 +0300 >> > > >> > > Efl text: add Font, Format and Style interfaces >> > > >> > > The following text interfaces are added: >> > > - Efl.Text.Font: font settings that decide which font to display >> in >> > > the text >> > > - Efl.Text.Format: formatting that affects the looks and layout >> of >> > > the text >> > > - Efl.Text.Style: decorations and overlays that shouldn't affect >> > the >> > > font choice or the layout >> > > >> > > @feature >> > >> > I think we have another namespacing issue here: >> > Efl.Text.Style do not use any namespace, while Efl.Text.Font and Format >> do, >> > >> > We discussed this already in chat today and we did not find a successfull >> > deal, >> > what I think at this point is that we really should find a rule to >> > apply to every Iface, >> > ...the problem is that we did not find any always-correct rule :( >> > >> >> In short, as I didn't follow that conversation, what were the arguments >> against namespacing "style"? >> >> > As I understand, it's not only about preventing clashes. Widgets are complex > objects, and having your widget doing: > widget.style_normal_color_set(...) > isn't really better for the user. A better choice might be: > widget.text_style_normal_color_set(...)
In real a more better name is "widget.text_normal_color_set(...)" the "style" prefix seems to me unneeded. This let me rise another question: do we really need this 3 interfaces to be splitted as they are? Isn't better to just provide a single "Efl.Text" iface ?? Or I miss a use case where an object would need just 1 or 2 of them? If they can be merged we will simplify the problem and shortening function names. > > A pretty good example from Davide was a combobox with the text widget > in it. There's no guarantee how your object is going to be used in the > future > and how fine the naming of your methods should be, due to unique styles > of inheritance like "composition", which is gaining popularity it seems. > > For common inheritance this is less likely to be a problem. > > >> I also wonder if having 9 color functions is really better than a single >> color function and an enum: color1, color2, color3, shadow, underline, >> etc...? >> >> > I wanted to avoid the enum mess. There's not a single pro I could think of > other than saving ME writing a few extra functions. > > >> Also, what objects will implement the below interfaces? I expect >> Efl.Canvas.Text for the default style, and some kind of text item object? >> >> > Efl.Ui.Text is a composite object, with Efl.Canvas.Text. We still needed the > text API to be exposed this in the documentation of Efl.Ui.Text, so users > know that they can manipulate the text object in this widget. > > >> ideas? >> > >> > >> > PS: I stripped down the commit below to only show the new eo interfaces, >> > so that >> > the issue is more evident >> > >> > >> > >> > > +interface Efl.Text.Font { >> > > + [[Font settings of the text >> > > + >> > > + @since 1.20 >> > > + ]] >> > > + methods { >> > > + @property font { >> > > + [[The font name and size that is used for the displayed >> text]] >> > > + values { >> > > + font: string; >> > > + size: int; >> > > + } >> > > + } >> > > + @property font_source { >> > > + [[The source that will be used to lookup the font of the text >> > > + >> > > + The source can be either a path to a font file e.g. >> > > + "/path/to/font.ttf", or an eet file e.g. >> "/path/to/font.eet". >> > > + ]] >> > > + values { >> > > + font_source: string; >> > > + } >> > > + } >> > > + >> > > + @property font_fallbacks { >> > > + [[Comma-separated list of font fallbacks >> > > + >> > > + Will be used in case the primary font isn't available. >> > > + ]] >> > > + values { >> > > + font_fallbacks: string; >> > > + } >> > > + } >> > > + >> > > + @property font_weight { >> > > + [[Type of weight of the displayed font >> > > + >> > > + Default is $Efl.Text.Font.Weight.normal\. >> > > + ]] >> > > + values { >> > > + font_weight: Efl.Text.Font.Weight; >> > > + } >> > > + } >> > > + >> > > + @property font_slant { >> > > + [[Type of slant of the displayed font >> > > + >> > > + Default is $Efl.Text.Font.Slant.normal\. >> > > + ]] >> > > + values { >> > > + style: Efl.Text.Font.Slant; >> > > + } >> > > + } >> > > + >> > > + @property font_width { >> > > + [[Type of width of the displayed font >> > > + >> > > + Default is $Efl.Text.Font.Width.normal\. >> > > + ]] >> > > + values { >> > > + width: Efl.Text.Font.Width; >> > > + } >> > > + } >> > > + >> > > + @property font_lang { >> > > + [[Specific language of the displayed font >> > > + >> > > + This is used to lookup fonts suitable to the specified >> > language, as >> > > + well as helping the font shaper backend. >> > > + The language $lang can be either a code e.g "en_US", >> > > + "auto" to use the system locale, or "none". >> > > + ]] >> > > + values { >> > > + lang: string; >> > > + } >> > > + } >> > > + } >> > > +} >> > >> > >> > > +interface Efl.Text.Format { >> > > + [[The look and layout of the text >> > > + >> > > + The text format can affect the geometry of the text object, as >> > well as >> > > + how characters are presented. >> > > + >> > > + @since 1.20 >> > > + ]] >> > > + methods { >> > > + @property format_ellipsis { >> > > + [[Ellipsis value (number from -1.0 to 1.0)]] >> > > + values >> > > + { >> > > + value: double; >> > > + } >> > > + } >> > > + >> > > + @property format_wrap { >> > > + [[Wrap mode for use in the text]] >> > > + values { >> > > + wrap: Efl.Text.Format.Wrap; >> > > + } >> > > + } >> > > + >> > > + @property format_multiline { >> > > + [[Multiline is enabled or not]] >> > > + values { >> > > + enabled: bool; >> > > + } >> > > + } >> > > + >> > > + @property format_halign { >> > > + [[Horizontal alignment of text (number from 0.0 to 1.0)]] >> > > + values >> > > + { >> > > + value: double; >> > > + } >> > > + } >> > > + >> > > + @property format_valign { >> > > + [[Vertical alignment of text (number from -1.0 to 1.0)]] >> > > + values >> > > + { >> > > + value: double; >> > > + } >> > > + } >> > > + >> > > + @property format_linegap { >> > > + [[Minimal line gap (top and bottom) for each line in the text >> > > + >> > > + $value is absolute size. >> > > + ]] >> > > + values >> > > + { >> > > + value: double; >> > > + } >> > > + } >> > > + >> > > + @property format_linerelgap { >> > > + [[Relative line gap (top and bottom) for each line in the >> text >> > > + >> > > + The original line gap value is multiplied by $value. >> > > + ]] >> > > + values >> > > + { >> > > + value: double; >> > > + } >> > > + } >> > > + >> > > + @property format_tabstops { >> > > + [[Tabstops value]] >> > > + values >> > > + { >> > > + value: int; >> > > + } >> > > + } >> > > + >> > > + @property format_password { >> > > + [[Whether text is a password]] >> > > + values >> > > + { >> > > + enabled: bool; >> > > + } >> > > + } >> > > + >> > > + @property format_replacement_char { >> > > + [[The character used to replace characters that can not be >> > displayed >> > > + >> > > + Currently, only used to replace characters if >> > @.format_password >> > > + is enabled. >> > > + ]] >> > > + values { >> > > + repch: string; >> > > + } >> > > + } >> > > + } >> > > +} >> > >> > >> > > +interface Efl.Text.Style { >> > > + [[Style to apply to the text >> > > + >> > > + A style can be coloring, effects, underline, strikethrough etc. >> > > + >> > > + @since 1.20 >> > > + ]] >> > > + methods { >> > > + @property normal_color { >> > > + [[Color of text, excluding style]] >> > > + values >> > > + { >> > > + r: ubyte; >> > > + g: ubyte; >> > > + b: ubyte; >> > > + a: ubyte; >> > > + } >> > > + } >> > > + >> > > + @property backing_type { >> > > + values >> > > + { >> > > + type: Efl.Text.Style.Backing_Type; >> > > + } >> > > + } >> > > + >> > > + @property backing_color { >> > > + values >> > > + { >> > > + r: ubyte; >> > > + g: ubyte; >> > > + b: ubyte; >> > > + a: ubyte; >> > > + } >> > > + } >> > > + >> > > + @property underline_type { >> > > + [[Sets an underline style on the text]] >> > > + values >> > > + { >> > > + type: Efl.Text.Style.Underline_Type; >> > > + } >> > > + } >> > > + >> > > + @property underline_color >> > > + { >> > > + [[Color of normal underline style]] >> > > + values >> > > + { >> > > + r: ubyte; >> > > + g: ubyte; >> > > + b: ubyte; >> > > + a: ubyte; >> > > + } >> > > + } >> > > + >> > > + @property underline_height >> > > + { >> > > + [[Height of underline style]] >> > > + values >> > > + { >> > > + height: double; >> > > + } >> > > + } >> > > + >> > > + @property underline_dashed_color >> > > + { >> > > + [[Color of dashed underline style]] >> > > + values >> > > + { >> > > + r: ubyte; >> > > + g: ubyte; >> > > + b: ubyte; >> > > + a: ubyte; >> > > + } >> > > + } >> > > + >> > > + @property underline_dashed_width >> > > + { >> > > + [[Width of dashed underline style]] >> > > + values >> > > + { >> > > + width: int; >> > > + } >> > > + } >> > > + >> > > + @property underline_dashed_gap >> > > + { >> > > + [[Gap of dashed underline style]] >> > > + values >> > > + { >> > > + gap: int; >> > > + } >> > > + } >> > > + >> > > + @property underline2_type >> > > + { >> > > + [[Type of underline2 style]] >> > > + values >> > > + { >> > > + type: Efl.Text.Style.Underline_Type; >> > > + } >> > > + } >> > > + >> > > + @property underline2_color >> > > + { >> > > + [[Color of underline2 style]] >> > > + values >> > > + { >> > > + r: ubyte; >> > > + g: ubyte; >> > > + b: ubyte; >> > > + a: ubyte; >> > > + } >> > > + } >> > > + >> > > + @property strikethrough_type { >> > > + [[Type of strikethrough style]] >> > > + values >> > > + { >> > > + type: Efl.Text.Style.Strikethrough_Type; >> > > + } >> > > + } >> > > + >> > > + @property strikethrough_color >> > > + { >> > > + [[Color of strikethrough_style]] >> > > + values >> > > + { >> > > + r: ubyte; >> > > + g: ubyte; >> > > + b: ubyte; >> > > + a: ubyte; >> > > + } >> > > + } >> > > + >> > > + @property effect_type { >> > > + [[Type of effect used for the displayed text]] >> > > + values { >> > > + type: Efl.Text.Style.Effect_Type; >> > > + } >> > > + } >> > > + @property outline_color >> > > + { >> > > + [[Color of outline effect]] >> > > + values >> > > + { >> > > + r: ubyte; >> > > + g: ubyte; >> > > + b: ubyte; >> > > + a: ubyte; >> > > + } >> > > + } >> > > + >> > > + @property shadow_direction >> > > + { >> > > + [[Direction of shadow effect]] >> > > + values >> > > + { >> > > + type: Efl.Text.Style.Shadow_Direction; >> > > + } >> > > + } >> > > + >> > > + @property shadow_color >> > > + { >> > > + [[Color of shadow effect]] >> > > + values >> > > + { >> > > + r: ubyte; >> > > + g: ubyte; >> > > + b: ubyte; >> > > + a: ubyte; >> > > + } >> > > + } >> > > + >> > > + @property glow_color >> > > + { >> > > + [[Color of glow effect]] >> > > + values >> > > + { >> > > + r: ubyte; >> > > + g: ubyte; >> > > + b: ubyte; >> > > + a: ubyte; >> > > + } >> > > + } >> > > + >> > > + @property glow2_color >> > > + { >> > > + [[Second color of the glow effect]] >> > > + values >> > > + { >> > > + r: ubyte; >> > > + g: ubyte; >> > > + b: ubyte; >> > > + a: ubyte; >> > > + } >> > > + } >> > > + } >> > > +} >> > > >> > > -- >> > > >> > > >> > >> > ------------------------------------------------------------ >> > ------------------ >> > Check out the vibrant tech community on one of the world's most >> > engaging tech sites, Slashdot.org! http://sdm.link/slashdot >> > _______________________________________________ >> > enlightenment-devel mailing list >> > enlightenment-devel@lists.sourceforge.net >> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel >> > >> > >> >> >> -- >> Jean-Philippe André >> ------------------------------------------------------------ >> ------------------ >> Check out the vibrant tech community on one of the world's most >> engaging tech sites, Slashdot.org! http://sdm.link/slashdot >> _______________________________________________ >> enlightenment-devel mailing list >> enlightenment-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel >> > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel