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:
parent
925b3ca564
commit
b752cea680
575
src/bin/grid.c
575
src/bin/grid.c
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue