Add function to init grid default colors.

Update textgrid cells in _smart_apply.
Add focus_in & focus_out callbacks to for cursor object.
Add function to set initial grid config.

Signed-off-by: Chris Michael <devilhorns@comcast.net>
This commit is contained in:
Chris Michael 2013-12-27 20:00:39 +00:00
parent 925b3ca564
commit b752cea680
1 changed files with 572 additions and 3 deletions

View File

@ -1,5 +1,14 @@
#include "private.h"
#define COL_INVIS 9
#define COL_INVERSE 10
#define COL_INVERSEBG 11
struct _Color
{
unsigned char r, g, b, a;
};
typedef struct _Grid Grid;
struct _Grid
{
@ -37,6 +46,371 @@ struct _Grid
/* local variables */
static Evas_Smart *_smart = NULL;
static Evas_Smart_Class _parent_sc = EVAS_SMART_CLASS_INIT_NULL;
static const Color colors[2][2][12] =
{
{ // normal
{ // normal
{ 0xaa, 0xaa, 0xaa, 0xff }, // COL_DEF
{ 0x00, 0x00, 0x00, 0xff }, // COL_BLACK
{ 0xc0, 0x00, 0x00, 0xff }, // COL_RED
{ 0x00, 0xc0, 0x00, 0xff }, // COL_GREEN
{ 0xc0, 0xc0, 0x00, 0xff }, // COL_YELLOW
{ 0x00, 0x00, 0xc0, 0xff }, // COL_BLUE
{ 0xc0, 0x00, 0xc0, 0xff }, // COL_MAGENTA
{ 0x00, 0xc0, 0xc0, 0xff }, // COL_CYAN
{ 0xc0, 0xc0, 0xc0, 0xff }, // COL_WHITE
{ 0x00, 0x00, 0x00, 0x00 }, // COL_INVIS
{ 0x22, 0x22, 0x22, 0xff }, // COL_INVERSE
{ 0xaa, 0xaa, 0xaa, 0xff }, // COL_INVERSEBG
},
{ // bright/bold
{ 0xee, 0xee, 0xee, 0xff }, // COL_DEF
{ 0xcc, 0xcc, 0xcc, 0xff }, // COL_BLACK
{ 0xcc, 0x88, 0x88, 0xff }, // COL_RED
{ 0x88, 0xcc, 0x88, 0xff }, // COL_GREEN
{ 0xcc, 0xaa, 0x88, 0xff }, // COL_YELLOW
{ 0x88, 0x88, 0xcc, 0xff }, // COL_BLUE
{ 0xcc, 0x88, 0xcc, 0xff }, // COL_MAGENTA
{ 0x88, 0xcc, 0xcc, 0xff }, // COL_CYAN
{ 0xcc, 0xcc, 0xcc, 0xff }, // COL_WHITE
{ 0x00, 0x00, 0x00, 0x00 }, // COL_INVIS
{ 0x11, 0x11, 0x11, 0xff }, // COL_INVERSE
{ 0xee, 0xee, 0xee, 0xff }, // COL_INVERSEBG
},
},
{ // intense
{ // normal
{ 0xdd, 0xdd, 0xdd, 0xff }, // COL_DEF
{ 0x80, 0x80, 0x80, 0xff }, // COL_BLACK
{ 0xff, 0x80, 0x80, 0xff }, // COL_RED
{ 0x80, 0xff, 0x80, 0xff }, // COL_GREEN
{ 0xff, 0xff, 0x80, 0xff }, // COL_YELLOW
{ 0x80, 0x80, 0xff, 0xff }, // COL_BLUE
{ 0xff, 0x80, 0xff, 0xff }, // COL_MAGENTA
{ 0x80, 0xff, 0xff, 0xff }, // COL_CYAN
{ 0xff, 0xff, 0xff, 0xff }, // COL_WHITE
{ 0x00, 0x00, 0x00, 0x00 }, // COL_INVIS
{ 0x11, 0x11, 0x11, 0xff }, // COL_INVERSE
{ 0xcc, 0xcc, 0xcc, 0xff }, // COL_INVERSEBG
},
{ // bright/bold
{ 0xff, 0xff, 0xff, 0xff }, // COL_DEF
{ 0xcc, 0xcc, 0xcc, 0xff }, // COL_BLACK
{ 0xff, 0xcc, 0xcc, 0xff }, // COL_RED
{ 0xcc, 0xff, 0xcc, 0xff }, // COL_GREEN
{ 0xff, 0xff, 0xcc, 0xff }, // COL_YELLOW
{ 0xcc, 0xcc, 0xff, 0xff }, // COL_BLUE
{ 0xff, 0xcc, 0xff, 0xff }, // COL_MAGENTA
{ 0xcc, 0xff, 0xff, 0xff }, // COL_CYAN
{ 0xff, 0xff, 0xff, 0xff }, // COL_WHITE
{ 0x00, 0x00, 0x00, 0x00 }, // COL_INVIS
{ 0x00, 0x00, 0x00, 0xff }, // COL_INVERSE
{ 0xff, 0xff, 0xff, 0xff }, // COL_INVERSEBG
}
}
};
static const Color colors256[256] =
{
// basic 16 repeated
{ 0x00, 0x00, 0x00, 0xff }, // COL_BLACK
{ 0xc0, 0x00, 0x00, 0xff }, // COL_RED
{ 0x00, 0xc0, 0x00, 0xff }, // COL_GREEN
{ 0xc0, 0xc0, 0x00, 0xff }, // COL_YELLOW
{ 0x00, 0x00, 0xc0, 0xff }, // COL_BLUE
{ 0xc0, 0x00, 0xc0, 0xff }, // COL_MAGENTA
{ 0x00, 0xc0, 0xc0, 0xff }, // COL_CYAN
{ 0xc0, 0xc0, 0xc0, 0xff }, // COL_WHITE
{ 0x80, 0x80, 0x80, 0xff }, // COL_BLACK
{ 0xff, 0x80, 0x80, 0xff }, // COL_RED
{ 0x80, 0xff, 0x80, 0xff }, // COL_GREEN
{ 0xff, 0xff, 0x80, 0xff }, // COL_YELLOW
{ 0x80, 0x80, 0xff, 0xff }, // COL_BLUE
{ 0xff, 0x80, 0xff, 0xff }, // COL_MAGENTA
{ 0x80, 0xff, 0xff, 0xff }, // COL_CYAN
{ 0xff, 0xff, 0xff, 0xff }, // COL_WHITE
// pure 6x6x6 colorcube
{ 0x00, 0x00, 0x00, 0xff },
{ 0x00, 0x00, 0x2a, 0xff },
{ 0x00, 0x00, 0x55, 0xff },
{ 0x00, 0x00, 0x7f, 0xff },
{ 0x00, 0x00, 0xaa, 0xff },
{ 0x00, 0x00, 0xd4, 0xff },
{ 0x00, 0x2a, 0x00, 0xff },
{ 0x00, 0x2a, 0x2a, 0xff },
{ 0x00, 0x2a, 0x55, 0xff },
{ 0x00, 0x2a, 0x7f, 0xff },
{ 0x00, 0x2a, 0xaa, 0xff },
{ 0x00, 0x2a, 0xd4, 0xff },
{ 0x00, 0x55, 0x00, 0xff },
{ 0x00, 0x55, 0x2a, 0xff },
{ 0x00, 0x55, 0x55, 0xff },
{ 0x00, 0x55, 0x7f, 0xff },
{ 0x00, 0x55, 0xaa, 0xff },
{ 0x00, 0x55, 0xd4, 0xff },
{ 0x00, 0x7f, 0x00, 0xff },
{ 0x00, 0x7f, 0x2a, 0xff },
{ 0x00, 0x7f, 0x55, 0xff },
{ 0x00, 0x7f, 0x7f, 0xff },
{ 0x00, 0x7f, 0xaa, 0xff },
{ 0x00, 0x7f, 0xd4, 0xff },
{ 0x00, 0xaa, 0x00, 0xff },
{ 0x00, 0xaa, 0x2a, 0xff },
{ 0x00, 0xaa, 0x55, 0xff },
{ 0x00, 0xaa, 0x7f, 0xff },
{ 0x00, 0xaa, 0xaa, 0xff },
{ 0x00, 0xaa, 0xd4, 0xff },
{ 0x00, 0xd4, 0x00, 0xff },
{ 0x00, 0xd4, 0x2a, 0xff },
{ 0x00, 0xd4, 0x55, 0xff },
{ 0x00, 0xd4, 0x7f, 0xff },
{ 0x00, 0xd4, 0xaa, 0xff },
{ 0x00, 0xd4, 0xd4, 0xff },
{ 0x2a, 0x00, 0x00, 0xff },
{ 0x2a, 0x00, 0x2a, 0xff },
{ 0x2a, 0x00, 0x55, 0xff },
{ 0x2a, 0x00, 0x7f, 0xff },
{ 0x2a, 0x00, 0xaa, 0xff },
{ 0x2a, 0x00, 0xd4, 0xff },
{ 0x2a, 0x2a, 0x00, 0xff },
{ 0x2a, 0x2a, 0x2a, 0xff },
{ 0x2a, 0x2a, 0x55, 0xff },
{ 0x2a, 0x2a, 0x7f, 0xff },
{ 0x2a, 0x2a, 0xaa, 0xff },
{ 0x2a, 0x2a, 0xd4, 0xff },
{ 0x2a, 0x55, 0x00, 0xff },
{ 0x2a, 0x55, 0x2a, 0xff },
{ 0x2a, 0x55, 0x55, 0xff },
{ 0x2a, 0x55, 0x7f, 0xff },
{ 0x2a, 0x55, 0xaa, 0xff },
{ 0x2a, 0x55, 0xd4, 0xff },
{ 0x2a, 0x7f, 0x00, 0xff },
{ 0x2a, 0x7f, 0x2a, 0xff },
{ 0x2a, 0x7f, 0x55, 0xff },
{ 0x2a, 0x7f, 0x7f, 0xff },
{ 0x2a, 0x7f, 0xaa, 0xff },
{ 0x2a, 0x7f, 0xd4, 0xff },
{ 0x2a, 0xaa, 0x00, 0xff },
{ 0x2a, 0xaa, 0x2a, 0xff },
{ 0x2a, 0xaa, 0x55, 0xff },
{ 0x2a, 0xaa, 0x7f, 0xff },
{ 0x2a, 0xaa, 0xaa, 0xff },
{ 0x2a, 0xaa, 0xd4, 0xff },
{ 0x2a, 0xd4, 0x00, 0xff },
{ 0x2a, 0xd4, 0x2a, 0xff },
{ 0x2a, 0xd4, 0x55, 0xff },
{ 0x2a, 0xd4, 0x7f, 0xff },
{ 0x2a, 0xd4, 0xaa, 0xff },
{ 0x2a, 0xd4, 0xd4, 0xff },
{ 0x55, 0x00, 0x00, 0xff },
{ 0x55, 0x00, 0x2a, 0xff },
{ 0x55, 0x00, 0x55, 0xff },
{ 0x55, 0x00, 0x7f, 0xff },
{ 0x55, 0x00, 0xaa, 0xff },
{ 0x55, 0x00, 0xd4, 0xff },
{ 0x55, 0x2a, 0x00, 0xff },
{ 0x55, 0x2a, 0x2a, 0xff },
{ 0x55, 0x2a, 0x55, 0xff },
{ 0x55, 0x2a, 0x7f, 0xff },
{ 0x55, 0x2a, 0xaa, 0xff },
{ 0x55, 0x2a, 0xd4, 0xff },
{ 0x55, 0x55, 0x00, 0xff },
{ 0x55, 0x55, 0x2a, 0xff },
{ 0x55, 0x55, 0x55, 0xff },
{ 0x55, 0x55, 0x7f, 0xff },
{ 0x55, 0x55, 0xaa, 0xff },
{ 0x55, 0x55, 0xd4, 0xff },
{ 0x55, 0x7f, 0x00, 0xff },
{ 0x55, 0x7f, 0x2a, 0xff },
{ 0x55, 0x7f, 0x55, 0xff },
{ 0x55, 0x7f, 0x7f, 0xff },
{ 0x55, 0x7f, 0xaa, 0xff },
{ 0x55, 0x7f, 0xd4, 0xff },
{ 0x55, 0xaa, 0x00, 0xff },
{ 0x55, 0xaa, 0x2a, 0xff },
{ 0x55, 0xaa, 0x55, 0xff },
{ 0x55, 0xaa, 0x7f, 0xff },
{ 0x55, 0xaa, 0xaa, 0xff },
{ 0x55, 0xaa, 0xd4, 0xff },
{ 0x55, 0xd4, 0x00, 0xff },
{ 0x55, 0xd4, 0x2a, 0xff },
{ 0x55, 0xd4, 0x55, 0xff },
{ 0x55, 0xd4, 0x7f, 0xff },
{ 0x55, 0xd4, 0xaa, 0xff },
{ 0x55, 0xd4, 0xd4, 0xff },
{ 0x7f, 0x00, 0x00, 0xff },
{ 0x7f, 0x00, 0x2a, 0xff },
{ 0x7f, 0x00, 0x55, 0xff },
{ 0x7f, 0x00, 0x7f, 0xff },
{ 0x7f, 0x00, 0xaa, 0xff },
{ 0x7f, 0x00, 0xd4, 0xff },
{ 0x7f, 0x2a, 0x00, 0xff },
{ 0x7f, 0x2a, 0x2a, 0xff },
{ 0x7f, 0x2a, 0x55, 0xff },
{ 0x7f, 0x2a, 0x7f, 0xff },
{ 0x7f, 0x2a, 0xaa, 0xff },
{ 0x7f, 0x2a, 0xd4, 0xff },
{ 0x7f, 0x55, 0x00, 0xff },
{ 0x7f, 0x55, 0x2a, 0xff },
{ 0x7f, 0x55, 0x55, 0xff },
{ 0x7f, 0x55, 0x7f, 0xff },
{ 0x7f, 0x55, 0xaa, 0xff },
{ 0x7f, 0x55, 0xd4, 0xff },
{ 0x7f, 0x7f, 0x00, 0xff },
{ 0x7f, 0x7f, 0x2a, 0xff },
{ 0x7f, 0x7f, 0x55, 0xff },
{ 0x7f, 0x7f, 0x7f, 0xff },
{ 0x7f, 0x7f, 0xaa, 0xff },
{ 0x7f, 0x7f, 0xd4, 0xff },
{ 0x7f, 0xaa, 0x00, 0xff },
{ 0x7f, 0xaa, 0x2a, 0xff },
{ 0x7f, 0xaa, 0x55, 0xff },
{ 0x7f, 0xaa, 0x7f, 0xff },
{ 0x7f, 0xaa, 0xaa, 0xff },
{ 0x7f, 0xaa, 0xd4, 0xff },
{ 0x7f, 0xd4, 0x00, 0xff },
{ 0x7f, 0xd4, 0x2a, 0xff },
{ 0x7f, 0xd4, 0x55, 0xff },
{ 0x7f, 0xd4, 0x7f, 0xff },
{ 0x7f, 0xd4, 0xaa, 0xff },
{ 0x7f, 0xd4, 0xd4, 0xff },
{ 0xaa, 0x00, 0x00, 0xff },
{ 0xaa, 0x00, 0x2a, 0xff },
{ 0xaa, 0x00, 0x55, 0xff },
{ 0xaa, 0x00, 0x7f, 0xff },
{ 0xaa, 0x00, 0xaa, 0xff },
{ 0xaa, 0x00, 0xd4, 0xff },
{ 0xaa, 0x2a, 0x00, 0xff },
{ 0xaa, 0x2a, 0x2a, 0xff },
{ 0xaa, 0x2a, 0x55, 0xff },
{ 0xaa, 0x2a, 0x7f, 0xff },
{ 0xaa, 0x2a, 0xaa, 0xff },
{ 0xaa, 0x2a, 0xd4, 0xff },
{ 0xaa, 0x55, 0x00, 0xff },
{ 0xaa, 0x55, 0x2a, 0xff },
{ 0xaa, 0x55, 0x55, 0xff },
{ 0xaa, 0x55, 0x7f, 0xff },
{ 0xaa, 0x55, 0xaa, 0xff },
{ 0xaa, 0x55, 0xd4, 0xff },
{ 0xaa, 0x7f, 0x00, 0xff },
{ 0xaa, 0x7f, 0x2a, 0xff },
{ 0xaa, 0x7f, 0x55, 0xff },
{ 0xaa, 0x7f, 0x7f, 0xff },
{ 0xaa, 0x7f, 0xaa, 0xff },
{ 0xaa, 0x7f, 0xd4, 0xff },
{ 0xaa, 0xaa, 0x00, 0xff },
{ 0xaa, 0xaa, 0x2a, 0xff },
{ 0xaa, 0xaa, 0x55, 0xff },
{ 0xaa, 0xaa, 0x7f, 0xff },
{ 0xaa, 0xaa, 0xaa, 0xff },
{ 0xaa, 0xaa, 0xd4, 0xff },
{ 0xaa, 0xd4, 0x00, 0xff },
{ 0xaa, 0xd4, 0x2a, 0xff },
{ 0xaa, 0xd4, 0x55, 0xff },
{ 0xaa, 0xd4, 0x7f, 0xff },
{ 0xaa, 0xd4, 0xaa, 0xff },
{ 0xaa, 0xd4, 0xd4, 0xff },
{ 0xd4, 0x00, 0x00, 0xff },
{ 0xd4, 0x00, 0x2a, 0xff },
{ 0xd4, 0x00, 0x55, 0xff },
{ 0xd4, 0x00, 0x7f, 0xff },
{ 0xd4, 0x00, 0xaa, 0xff },
{ 0xd4, 0x00, 0xd4, 0xff },
{ 0xd4, 0x2a, 0x00, 0xff },
{ 0xd4, 0x2a, 0x2a, 0xff },
{ 0xd4, 0x2a, 0x55, 0xff },
{ 0xd4, 0x2a, 0x7f, 0xff },
{ 0xd4, 0x2a, 0xaa, 0xff },
{ 0xd4, 0x2a, 0xd4, 0xff },
{ 0xd4, 0x55, 0x00, 0xff },
{ 0xd4, 0x55, 0x2a, 0xff },
{ 0xd4, 0x55, 0x55, 0xff },
{ 0xd4, 0x55, 0x7f, 0xff },
{ 0xd4, 0x55, 0xaa, 0xff },
{ 0xd4, 0x55, 0xd4, 0xff },
{ 0xd4, 0x7f, 0x00, 0xff },
{ 0xd4, 0x7f, 0x2a, 0xff },
{ 0xd4, 0x7f, 0x55, 0xff },
{ 0xd4, 0x7f, 0x7f, 0xff },
{ 0xd4, 0x7f, 0xaa, 0xff },
{ 0xd4, 0x7f, 0xd4, 0xff },
{ 0xd4, 0xaa, 0x00, 0xff },
{ 0xd4, 0xaa, 0x2a, 0xff },
{ 0xd4, 0xaa, 0x55, 0xff },
{ 0xd4, 0xaa, 0x7f, 0xff },
{ 0xd4, 0xaa, 0xaa, 0xff },
{ 0xd4, 0xaa, 0xd4, 0xff },
{ 0xd4, 0xd4, 0x00, 0xff },
{ 0xd4, 0xd4, 0x2a, 0xff },
{ 0xd4, 0xd4, 0x55, 0xff },
{ 0xd4, 0xd4, 0x7f, 0xff },
{ 0xd4, 0xd4, 0xaa, 0xff },
{ 0xd4, 0xd4, 0xd4, 0xff },
// greyscale ramp (24 not including black and white, so 26 if included)
{ 0x08, 0x08, 0x08, 0xff },
{ 0x12, 0x12, 0x12, 0xff },
{ 0x1c, 0x1c, 0x1c, 0xff },
{ 0x26, 0x26, 0x26, 0xff },
{ 0x30, 0x30, 0x30, 0xff },
{ 0x3a, 0x3a, 0x3a, 0xff },
{ 0x44, 0x44, 0x44, 0xff },
{ 0x4e, 0x4e, 0x4e, 0xff },
{ 0x58, 0x58, 0x58, 0xff },
{ 0x62, 0x62, 0x62, 0xff },
{ 0x6c, 0x6c, 0x6c, 0xff },
{ 0x76, 0x76, 0x76, 0xff },
{ 0x80, 0x80, 0x80, 0xff },
{ 0x8a, 0x8a, 0x8a, 0xff },
{ 0x94, 0x94, 0x94, 0xff },
{ 0x9e, 0x9e, 0x9e, 0xff },
{ 0xa8, 0xa8, 0xa8, 0xff },
{ 0xb2, 0xb2, 0xb2, 0xff },
{ 0xbc, 0xbc, 0xbc, 0xff },
{ 0xc6, 0xc6, 0xc6, 0xff },
{ 0xd0, 0xd0, 0xd0, 0xff },
{ 0xda, 0xda, 0xda, 0xff },
{ 0xe4, 0xe4, 0xe4, 0xff },
{ 0xee, 0xee, 0xee, 0xff },
};
/* local function prototypes */
static void _smart_calculate(Evas_Object *obj);
@ -47,6 +421,7 @@ _smart_apply(Evas_Object *obj)
{
Grid *sd;
Evas_Coord ox, oy;
int j, x, y, w, ch1 = 0, ch2 = 0, inv = 0;
/* try to get smart data */
if (!(sd = evas_object_smart_data_get(obj))) return;
@ -56,6 +431,46 @@ _smart_apply(Evas_Object *obj)
/* TODO: finish */
/* loop cells on grid */
for (y = 0; y < sd->grid.h; y++)
{
Evas_Textgrid_Cell *tc;
w = 0; j = 0;
if (!(tc = evas_object_textgrid_cellrow_get(sd->grid.obj, y)))
continue;
ch1 = -1;
for (x = 0; x < sd->grid.w; x++)
{
if (x >= w)
{
if ((tc[x].codepoint != 0) ||
(tc[x].bg != COL_INVIS) ||
(tc[x].bg_extended))
{
if (ch1 < 0) ch1 = x;
ch2 = x;
}
tc[x].codepoint = 0;
if (inv) tc[x].bg = COL_INVERSEBG;
else tc[x].bg = COL_INVIS;
tc[x].bg_extended = 0;
tc[x].double_width = 0;
tc[x].underline = 0;
tc[x].strikethrough = 0;
}
else
{
/* TODO: block id ?? */
}
j++;
}
evas_object_textgrid_cellrow_set(sd->grid.obj, y, tc);
if (ch1 >= 0)
evas_object_textgrid_update_add(sd->grid.obj,
ch1, y, ch2 - ch1 + 1, 1);
}
/* TODO: test scrolling */
evas_object_show(sd->cursor.obj);
@ -146,6 +561,30 @@ _smart_cb_cursor_move(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_
/* TODO: imf_cursor_set */
}
static void
_smart_cb_focus_in(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
{
Grid *sd;
/* try to get smart data */
if (!(sd = evas_object_smart_data_get(data))) return;
edje_object_signal_emit(sd->cursor.obj, "focus,in", "express");
/* TODO: finish */
}
static void
_smart_cb_focus_out(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
{
Grid *sd;
/* try to get smart data */
if (!(sd = evas_object_smart_data_get(data))) return;
edje_object_signal_emit(sd->cursor.obj, "focus,out", "express");
/* TODO: finish */
}
static void
_smart_calculate(Evas_Object *obj)
{
@ -175,9 +614,8 @@ _smart_add(Evas_Object *obj)
if (!(sd = calloc(1, sizeof(Grid)))) return;
/* FIXME */
sd->font.size = 8;
sd->font.chw = 1;
sd->font.chh = 1;
sd->cursor.x = 0;
sd->cursor.y = 0;
evas_object_smart_data_set(obj, sd);
@ -221,6 +659,10 @@ _smart_add(Evas_Object *obj)
evas_object_show(sd->o_event);
/* TODO: Finish callbacks & imf */
evas_object_event_callback_add(obj, EVAS_CALLBACK_FOCUS_IN,
_smart_cb_focus_in, obj);
evas_object_event_callback_add(obj, EVAS_CALLBACK_FOCUS_OUT,
_smart_cb_focus_out, obj);
}
static void
@ -238,6 +680,7 @@ _smart_del(Evas_Object *obj)
if (sd->sel.bottom) evas_object_del(sd->sel.bottom);
if (sd->sel.theme) evas_object_del(sd->sel.theme);
if (sd->grid.obj) evas_object_del(sd->grid.obj);
if (sd->font.name) eina_stringshare_del(sd->font.name);
/* TODO: finish */
_parent_sc.del(obj);
@ -292,6 +735,51 @@ _smart_init(void)
_smart = evas_smart_class_new(&sc);
}
static void
_grid_config_set(Grid *sd)
{
Evas_Coord w = 2, h = 2;
if (_ex_cfg->font.bitmap)
{
char buff[PATH_MAX];
snprintf(buff, sizeof(buff), "%s/fonts/%s",
elm_app_data_dir_get(), _ex_cfg->font.name);
sd->font.name = eina_stringshare_add(buff);
}
else
sd->font.name = eina_stringshare_add(_ex_cfg->font.name);
sd->font.size = _ex_cfg->font.size;
evas_object_scale_set(sd->grid.obj, elm_config_scale_get());
evas_object_textgrid_font_set(sd->grid.obj, sd->font.name, sd->font.size);
evas_object_textgrid_size_get(sd->grid.obj, &w, &h);
if (w < 1) w = 1;
if (h < 1) h = 1;
evas_object_textgrid_size_set(sd->grid.obj, w, h);
evas_object_textgrid_cell_size_get(sd->grid.obj, &w, &h);
if (w < 1) w = 1;
if (h < 1) h = 1;
sd->font.chw = w;
sd->font.chh = h;
_theme_apply(sd->cursor.obj, "express/cursor");
_theme_reload_enable(sd->cursor.obj);
evas_object_resize(sd->cursor.obj, sd->font.chw, sd->font.chh);
evas_object_show(sd->cursor.obj);
/* TODO */
/* _theme_apply(sd->sel.theme, "express/selection"); */
/* _theme_reload_enable(sd->sel.theme); */
/* edje_object_part_swallow(sd->sel.theme, "express.top_left", sd->sel.top); */
/* edje_object_part_swallow(sd->sel.theme, */
/* "express.bottom_left", sd->sel.bottom); */
}
Evas_Object *
_grid_add(Evas_Object *parent)
{
@ -307,7 +795,88 @@ _grid_add(Evas_Object *parent)
obj = evas_object_smart_add(evas, _smart);
if (!(sd = evas_object_smart_data_get(obj))) return obj;
_grid_config_set(sd);
_smart_size(obj, 80, 24, EINA_FALSE);
return obj;
}
void
_grid_colors_init(Evas_Object *obj, Evas_Object *bg)
{
Grid *sd;
int c, n;
int r, g, b, a;
char buf[32];
/* try to get smart data */
if (!(sd = evas_object_smart_data_get(obj))) return;
for (c = 0; c < 4 * 12; c++)
{
snprintf(buf, sizeof(buf) - 1, "c%i", c);
n = c + (24 * (c / 24));
if (edje_object_color_class_get(bg, buf,
&r, &g, &b, &a,
NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL))
{
/* normal */
evas_object_textgrid_palette_set(sd->grid.obj,
EVAS_TEXTGRID_PALETTE_STANDARD,
n, r, g, b, a);
/* faint */
evas_object_textgrid_palette_set(sd->grid.obj,
EVAS_TEXTGRID_PALETTE_STANDARD,
n + 24,
r / 2, g / 2, b / 2, a / 2);
}
else
{
Color color;
color = colors[c / 24][(c % 24) / 12][c % 12];
/* normal */
evas_object_textgrid_palette_set(sd->grid.obj,
EVAS_TEXTGRID_PALETTE_STANDARD,
n, color.r, color.g, color.b,
color.a);
/* faint */
evas_object_textgrid_palette_set(sd->grid.obj,
EVAS_TEXTGRID_PALETTE_STANDARD,
n + 24,
color.r / 2, color.g / 2,
color.b / 2, color.a / 2);
}
}
for (c = 0; c < 256; c++)
{
snprintf(buf, sizeof(buf) - 1, "C%i", c);
if (edje_object_color_class_get(bg, buf,
&r, &g, &b, &a,
NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL))
{
evas_object_textgrid_palette_set(sd->grid.obj,
EVAS_TEXTGRID_PALETTE_EXTENDED,
c, r, g, b, a);
}
else
{
Color color;
color = colors256[c];
evas_object_textgrid_palette_set(sd->grid.obj,
EVAS_TEXTGRID_PALETTE_EXTENDED,
c, color.r, color.g, color.b,
color.a);
}
}
}