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
This commit is contained in:
Daniel Hirt 2017-05-22 17:36:41 +03:00
parent 57a0343775
commit da2ef30f2b
6 changed files with 491 additions and 0 deletions

View 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 \

View 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

View 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"

View File

@ -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;
}
}
}
}

View File

@ -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;
}
}
}
}

View File

@ -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;
}
}
}
}