Efl text: add Font, Format and Style interfaces
authorDaniel Hirt <hirt.danny@gmail.com>
Mon, 22 May 2017 14:36:41 +0000 (17:36 +0300)
committerDaniel Hirt <hirt.danny@gmail.com>
Sun, 28 May 2017 10:36:16 +0000 (13:36 +0300)
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

src/Makefile_Efl.am
src/lib/efl/Efl.h
src/lib/efl/interfaces/efl_interfaces_main.c
src/lib/efl/interfaces/efl_text_font.eo [new file with mode: 0644]
src/lib/efl/interfaces/efl_text_format.eo [new file with mode: 0644]
src/lib/efl/interfaces/efl_text_style.eo [new file with mode: 0644]

index 5cde197..60041ed 100644 (file)
@@ -16,6 +16,9 @@ efl_eolian_files = \
       lib/efl/interfaces/efl_part.eo \
       lib/efl/interfaces/efl_player.eo \
       lib/efl/interfaces/efl_text.eo \
+      lib/efl/interfaces/efl_text_font.eo \
+      lib/efl/interfaces/efl_text_style.eo \
+      lib/efl/interfaces/efl_text_format.eo \
       lib/efl/interfaces/efl_text_properties.eo \
       lib/efl/interfaces/efl_gfx_stack.eo \
       lib/efl/interfaces/efl_gfx_view.eo \
index 4a3f858..c428a2d 100644 (file)
@@ -143,6 +143,11 @@ typedef Efl_Gfx_Path_Command_Type Efl_Gfx_Path_Command;
 #include "interfaces/efl_io_buffer.eo.h"
 #include "interfaces/efl_io_queue.eo.h"
 
+/* Text interfaces */
+#include "interfaces/efl_text_font.eo.h"
+#include "interfaces/efl_text_style.eo.h"
+#include "interfaces/efl_text_format.eo.h"
+
 #else
 
 #ifndef EFL_NOLEGACY_API_SUPPORT
index 1b052e4..209f9e4 100644 (file)
@@ -14,6 +14,9 @@
 #include "interfaces/efl_player.eo.c"
 #include "interfaces/efl_text.eo.c"
 #include "interfaces/efl_text_properties.eo.c"
+#include "interfaces/efl_text_font.eo.c"
+#include "interfaces/efl_text_style.eo.c"
+#include "interfaces/efl_text_format.eo.c"
 
 #include "interfaces/efl_gfx.eo.c"
 #include "interfaces/efl_gfx_buffer.eo.c"
diff --git a/src/lib/efl/interfaces/efl_text_font.eo b/src/lib/efl/interfaces/efl_text_font.eo
new file mode 100644 (file)
index 0000000..3f4a1ac
--- /dev/null
@@ -0,0 +1,117 @@
+// src/lib/efl/interfaces/efl_text_font.eo
+
+enum Efl.Text.Font.Weight {
+   [[Type of font weight]]
+   normal,
+   thin,
+   ultralight,
+   extralight,
+   light,
+   book,
+   medium,
+   semibold,
+   bold,
+   ultrabold,
+   extrabold,
+   black,
+   extrablack,
+}
+
+enum Efl.Text.Font.Width {
+   [[Type of font width]]
+   normal,
+   ultracondensed,
+   extracondensed,
+   condensed,
+   semicondensed,
+   semiexpanded,
+   expanded,
+   extraexpanded,
+   ultraexpanded,
+}
+
+enum Efl.Text.Font.Slant {
+    [[Type of font slant]]
+    normal,
+    oblique,
+    italic,
+}
+
+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;
+         }
+      }
+   }
+}
diff --git a/src/lib/efl/interfaces/efl_text_format.eo b/src/lib/efl/interfaces/efl_text_format.eo
new file mode 100644 (file)
index 0000000..acc58b9
--- /dev/null
@@ -0,0 +1,106 @@
+enum Efl.Text.Format.Wrap {
+   [[Wrap mode of the text (not in effect if not multiline)]]
+   none,
+   char,
+   word,
+   mixed,
+   hyphenation
+}
+
+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;
+         }
+      }
+   }
+}
diff --git a/src/lib/efl/interfaces/efl_text_style.eo b/src/lib/efl/interfaces/efl_text_style.eo
new file mode 100644 (file)
index 0000000..136a80f
--- /dev/null
@@ -0,0 +1,257 @@
+enum Efl.Text.Style.Backing_Type
+{
+   [[Whether to apply backing style to the displayed text or not]]
+   disabled = 0, [[Do not use backing]]
+   enabled,      [[Use backing style]]
+}
+
+enum Efl.Text.Style.Strikethrough_Type
+{
+   [[Whether to apply strikethrough style to the displayed text or not]]
+   disabled = 0, [[Do not use strikethrough]]
+   enabled,      [[Use strikethrough style]]
+}
+
+enum Efl.Text.Style.Effect_Type
+{
+   [[Effect to apply to the displayed text]]
+   none = 0,
+
+   // colored with shadow_color
+   shadow,
+   far_shadow,
+   soft_shadow,
+   far_soft_shadow,
+   // colored with glow_color
+   glow,
+   // colored with outline_color
+   outline,
+   soft_outline,
+   // colored with outline_color + shadow_color
+   outline_shadow,
+   outline_soft_shadow,
+}
+
+enum Efl.Text.Style.Shadow_Direction
+{
+   [[Direction of the shadow style, if used]]
+   bottom_right = 0,
+   bottom,
+   bottom_left,
+   left,
+   top_left,
+   top,
+   top_right,
+   right,
+}
+
+enum Efl.Text.Style.Underline_Type
+{
+   [[Underline type of the displayed text]]
+   off = 0,
+   on,
+   single,
+   double,
+   dashed,
+}
+
+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;
+         }
+      }
+   }
+}