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

Reply via email to