Breaking changes for expr_color

expr_color is a temporary class name for new color type experiment.
This commit is contained in:
cnjinhao
2014-12-17 11:20:47 +08:00
parent 74c09eb9b3
commit 42788db077
58 changed files with 1135 additions and 824 deletions

View File

@@ -22,45 +22,45 @@ namespace gadget
{
typedef nana::paint::graphics& graph_reference;
void hollow_triangle(graph_reference graph, int x, int y, nana::color_t color, uint32_t direction)
void hollow_triangle(graph_reference graph, int x, int y, uint32_t direction)
{
x += 3;
y += 3;
switch(direction)
switch (direction)
{
case directions::to_east:
graph.line(x + 3, y + 1, x + 3, y + 9, color);
graph.line(x + 4, y + 2 , x + 7, y + 5, color);
graph.line(x + 6, y + 6, x + 4, y + 8, color);
graph.line(point{ x + 3, y + 1 }, point{ x + 3, y + 9 });
graph.line(point{ x + 4, y + 2 }, point{ x + 7, y + 5 });
graph.line(point{ x + 6, y + 6 }, point{ x + 4, y + 8 });
break;
case directions::to_southeast:
graph.line(x + 2, y + 7, x + 7, y + 7, color);
graph.line(x + 7, y + 2, x + 7, y + 6, color);
graph.line(x + 3, y + 6, x + 6, y + 3, color);
graph.line(point{ x + 2, y + 7 }, point{ x + 7, y + 7 });
graph.line(point{ x + 7, y + 2 }, point{ x + 7, y + 6 });
graph.line(point{ x + 3, y + 6 }, point{ x + 6, y + 3 });
break;
case directions::to_south:
y += 3;
graph.line(x, y, x + 8, y, color);
graph.line(x + 1, y + 1, x + 4, y + 4, color);
graph.line(x + 7, y + 1, x + 5, y + 3, color);
graph.line(point{ x, y }, point{ x + 8, y });
graph.line(point{ x + 1, y + 1 }, point{ x + 4, y + 4 });
graph.line(point{ x + 7, y + 1 }, point{ x + 5, y + 3 });
break;
case directions::to_west:
x += 5;
y += 1;
graph.line(x, y, x, y + 8, color);
graph.line(x - 4, y + 4, x - 1, y + 1, color);
graph.line(x - 3, y + 5, x - 1, y + 7, color);
graph.line(point{ x, y }, point{ x, y + 8 });
graph.line(point{ x - 4, y + 4 }, point{ x - 1, y + 1 });
graph.line(point{ x - 3, y + 5 }, point{ x - 1, y + 7 });
break;
case directions::to_north:
y += 7;
graph.line(x, y, x + 8, y, color);
graph.line(x + 1, y - 1, x + 4, y - 4, color);
graph.line(x + 5, y - 3, x + 7, y - 1, color);
graph.line(point{ x, y }, point{x + 8, y});
graph.line(point{x + 1, y - 1}, point{x + 4, y - 4});
graph.line(point{x + 5, y - 3}, point{x + 7, y - 1});
break;
}
}
void solid_triangle(graph_reference graph, int x, int y, nana::color_t color, uint32_t dir)
void solid_triangle(graph_reference graph, int x, int y, uint32_t dir)
{
x += 3;
y += 3;
@@ -68,40 +68,40 @@ namespace gadget
{
case directions::to_east:
for(int i = 0; i < 5; ++i)
graph.line(x + 3 + i, y + 1 + i, x + 3 + i, y + 9 - i, color);
graph.line(point{ x + 3 + i, y + 1 + i }, point{ x + 3 + i, y + 9 - i });
break;
case directions::to_southeast:
for(int i = 0; i < 6; ++i)
graph.line(x + 2 + i, y + 7 - i, x + 7, y + 7 - i, color);
graph.line(point{ x + 2 + i, y + 7 - i }, point{ x + 7, y + 7 - i });
break;
case directions::to_south:
y += 3;
for(int i = 0; i < 5; ++i)
graph.line(x + i, y + i, x + 8 - i, y + i, color);
graph.line(point{ x + i, y + i }, point{ x + 8 - i, y + i });
break;
case directions::to_west:
x += 5;
y += 1;
for(int i = 0; i < 5; ++i)
graph.line(x - i, y + i, x - i, y + 8 - i, color);
graph.line(point{ x - i, y + i }, point{ x - i, y + 8 - i });
break;
case directions::to_north:
y += 7;
for(int i = 0; i < 5; ++i)
graph.line(x + i, y - i, x + 8 - i, y - i, color);
graph.line(point{ x + i, y - i }, point{ x + 8 - i, y - i });
break;
}
}
void direction_arrow(graph_reference graph, int x, int y, nana::color_t color, uint32_t dir)
void direction_arrow(graph_reference graph, int x, int y, uint32_t dir)
{
graph.set_color({ 0x0, 0x2, 0x62 });
y += 5;
switch(dir)
{
case directions::to_north:
{
x += 3;
int pixels = 1;
for(int l = 0; l < 4; ++l)
{
@@ -110,7 +110,7 @@ namespace gadget
if(l ==3 && i == 3)
{}
else
graph.set_pixel(x + i, y, 0x262);
graph.set_pixel(x + i, y);
}
x--;
@@ -118,29 +118,28 @@ namespace gadget
pixels += 2;
}
graph.set_pixel(x + 1, y, 0x262);
graph.set_pixel(x + 2, y, 0x262);
graph.set_pixel(x + 6, y, 0x262);
graph.set_pixel(x + 7, y, 0x262);
graph.set_pixel(x + 1, y);
graph.set_pixel(x + 2, y);
graph.set_pixel(x + 6, y);
graph.set_pixel(x + 7, y);
}
break;
case directions::to_south:
{
graph.set_pixel(x, y, 0x262);
graph.set_pixel(x + 1, y, 0x262);
graph.set_pixel(x + 5, y, 0x262);
graph.set_pixel(x + 6, y, 0x262);
graph.set_pixel(x, y);
graph.set_pixel(x + 1, y);
graph.set_pixel(x + 5, y);
graph.set_pixel(x + 6, y);
++y;
int pixels = 7;
for(int l = 0; l < 4; ++l)
for (int l = 0; l < 4; ++l)
{
for(int i = 0; i < pixels; ++i)
for (int i = 0; i < pixels; ++i)
{
if(l == 0 && i == 3){}
else
graph.set_pixel(x + i, y, 0x262);
if (l != 0 || i != 3)
graph.set_pixel(x + i, y);
}
x++;
@@ -152,54 +151,54 @@ namespace gadget
}
}
void double_arrow_line(nana::paint::graphics & graph, int x, int y, color_t color, bool horizontal)
void double_arrow_line(nana::paint::graphics & graph, int x, int y, bool horizontal)
{
graph.set_pixel(x, y, color);
graph.set_pixel(x, y);
if(horizontal)
{
graph.set_pixel(x + 1, y, color);
graph.set_pixel(x + 4, y, color);
graph.set_pixel(x + 5, y, color);
graph.set_pixel(x + 1, y);
graph.set_pixel(x + 4, y);
graph.set_pixel(x + 5, y);
}
else
{
graph.set_pixel(x, y + 1, color);
graph.set_pixel(x, y + 4, color);
graph.set_pixel(x, y + 5, color);
graph.set_pixel(x, y + 1);
graph.set_pixel(x, y + 4);
graph.set_pixel(x, y + 5);
}
}
void double_arrow(nana::paint::graphics& graph, int x, int y, color_t color, directions::t dir)
void double_arrow(nana::paint::graphics& graph, int x, int y, directions::t dir)
{
switch(dir)
{
case directions::to_east:
double_arrow_line(graph, x + 4, y + 6, color, true);
double_arrow_line(graph, x + 5, y + 7, color, true);
double_arrow_line(graph, x + 6, y + 8, color, true);
double_arrow_line(graph, x + 5, y + 9, color, true);
double_arrow_line(graph, x + 4, y + 10, color, true);
double_arrow_line(graph, x + 4, y + 6, true);
double_arrow_line(graph, x + 5, y + 7, true);
double_arrow_line(graph, x + 6, y + 8, true);
double_arrow_line(graph, x + 5, y + 9, true);
double_arrow_line(graph, x + 4, y + 10, true);
break;
case directions::to_west:
double_arrow_line(graph, x + 5, y + 6, color, true);
double_arrow_line(graph, x + 4, y + 7, color, true);
double_arrow_line(graph, x + 3, y + 8, color, true);
double_arrow_line(graph, x + 4, y + 9, color, true);
double_arrow_line(graph, x + 5, y + 10, color, true);
double_arrow_line(graph, x + 5, y + 6, true);
double_arrow_line(graph, x + 4, y + 7, true);
double_arrow_line(graph, x + 3, y + 8, true);
double_arrow_line(graph, x + 4, y + 9, true);
double_arrow_line(graph, x + 5, y + 10, true);
break;
case directions::to_south:
double_arrow_line(graph, x + 5, y + 4, color, false);
double_arrow_line(graph, x + 6, y + 5, color, false);
double_arrow_line(graph, x + 7, y + 6, color, false);
double_arrow_line(graph, x + 8, y + 5, color, false);
double_arrow_line(graph, x + 9, y + 4, color, false);
double_arrow_line(graph, x + 5, y + 4, false);
double_arrow_line(graph, x + 6, y + 5, false);
double_arrow_line(graph, x + 7, y + 6, false);
double_arrow_line(graph, x + 8, y + 5, false);
double_arrow_line(graph, x + 9, y + 4, false);
break;
case directions::to_north:
double_arrow_line(graph, x + 5, y + 6, color, false);
double_arrow_line(graph, x + 6, y + 5, color, false);
double_arrow_line(graph, x + 7, y + 4, color, false);
double_arrow_line(graph, x + 8, y + 5, color, false);
double_arrow_line(graph, x + 9, y + 6, color, false);
double_arrow_line(graph, x + 5, y + 6, false);
double_arrow_line(graph, x + 6, y + 5, false);
double_arrow_line(graph, x + 7, y + 4, false);
double_arrow_line(graph, x + 8, y + 5, false);
double_arrow_line(graph, x + 9, y + 6, false);
break;
default:
break;
@@ -209,56 +208,59 @@ namespace gadget
//arrow_16_pixels
//param@style: 0 = hollow, 1 = solid
void arrow_16_pixels(nana::paint::graphics& graph, int x, int y, unsigned color, uint32_t style, directions::t dir)
void arrow_16_pixels(nana::paint::graphics& graph, int x, int y, const nana::expr_color& clr, uint32_t style, directions::t dir)
{
graph.set_color(clr);
switch(style)
{
case 1:
detail::solid_triangle(graph, x, y, color, dir);
detail::solid_triangle(graph, x, y, dir);
break;
case 2:
detail::direction_arrow(graph, x, y, color, dir);
detail::direction_arrow(graph, x, y, dir);
break;
case 3:
detail::double_arrow(graph, x, y, color, dir);
detail::double_arrow(graph, x, y, dir);
break;
case 0:
default:
detail::hollow_triangle(graph, x, y, color, dir);
detail::hollow_triangle(graph, x, y, dir);
break;
}
}
void close_16_pixels(nana::paint::graphics& graph, int x, int y, uint32_t style, uint32_t color)
void close_16_pixels(::nana::paint::graphics& graph, int x, int y, uint32_t style, const ::nana::expr_color& clr)
{
graph.set_color(clr);
if(0 == style)
{
x += 3;
y += 3;
graph.line(x, y, x + 9, y + 9, color);
graph.line(x + 1, y, x + 9, y + 8, color);
graph.line(x, y + 1, x + 8, y + 9, color);
graph.line({ x, y }, { x + 9, y + 9 });
graph.line({ x + 1, y }, { x + 9, y + 8 });
graph.line({ x, y + 1 }, { x + 8, y + 9 });
graph.line(x + 9, y, x , y + 9, color);
graph.line(x + 8, y, x, y + 8, color);
graph.line(x + 9, y + 1, x + 1, y + 9, color);
graph.line({ x + 9, y }, { x, y + 9 });
graph.line({ x + 8, y }, { x, y + 8 });
graph.line({ x + 9, y + 1 }, { x + 1, y + 9 });
}
else
{
x += 4;
y += 4;
graph.line(x, y, x + 7, y + 7, color);
graph.line(x + 1, y, x + 7, y + 6, color);
graph.line(x, y + 1, x + 6, y + 7, color);
graph.line({ x, y }, { x + 7, y + 7 });
graph.line({ x + 1, y }, { x + 7, y + 6 });
graph.line({ x, y + 1 }, { x + 6, y + 7 });
graph.line(x + 7, y, x , y + 7, color);
graph.line(x + 6, y, x, y + 6, color);
graph.line(x + 7, y + 1, x + 1, y + 7, color);
graph.line({ x + 7, y }, { x, y + 7 });
graph.line({ x + 6, y }, { x, y + 6 });
graph.line({ x + 7, y + 1 }, { x + 1, y + 7 });
}
}
/*
void cross(graphics& graph, int x, int y, uint32_t size, uint32_t thickness, ::nana::color_t color) //deprecated
{
if (thickness + 2 <= size)
@@ -309,8 +311,8 @@ namespace gadget
graph.rectangle(ps[10].x + 1, ps[10].y + 1, (gap << 1) + thickness - 2, thickness - 2, color, true);
graph.rectangle(ps[0].x + 1, ps[0].y + 1, thickness - 2, (gap << 1) + thickness - 2, color, true);
}
}
*/
void cross(graphics& graph, int x, int y, uint32_t size, uint32_t thickness, const ::nana::expr_color& color)
{