Index: trunk/src/core/ascii_printer.cc
===================================================================
--- trunk/src/core/ascii_printer.cc	(revision 509)
+++ trunk/src/core/ascii_printer.cc	(revision 514)
@@ -15,10 +15,10 @@
 }
 
-void ascii_printer::print( const string_view& text, const position& p, uint32 color )
+void ascii_printer::print( const string_view& text, const position& p, term_color color )
 {
 	position coord( p );
 	for ( char c : text )
 	{
-		m_terminal->print( coord, color, c );
+		m_terminal->print( coord, color, term_color(), c );
 		++coord.x;
 		if ( coord.x >= m_terminal->get_size().x ) break;
@@ -26,27 +26,27 @@
 }
 
-void nv::ascii_printer::frame( const nv::rectangle& area, const nv::string_view& border_chars, uint32 color )
+void nv::ascii_printer::frame( const nv::rectangle& area, const nv::string_view& border_chars, term_color color )
 {
 	if ( border_chars.length() < 8 )
 	{
-		m_terminal->clear( area );
+		m_terminal->clear( area, color, term_color() );
 		return;
 	}
-	m_terminal->clear( area.shrinked( 1 ) );
+	m_terminal->clear( area.shrinked( 1 ), color, term_color() );
 	for ( int x = 0; x < area.get_width(); ++x )
 	{
-		m_terminal->print( position( area.ul.x + x, area.ul.y ), color, border_chars[0] );
-		m_terminal->print( position( area.ul.x + x, area.lr.y ), color, border_chars[1] );
+		m_terminal->print( position( area.ul.x + x, area.ul.y ), color, term_color(), border_chars[0] );
+		m_terminal->print( position( area.ul.x + x, area.lr.y ), color, term_color(), border_chars[1] );
 	}
 
 	for ( int y = 0; y < area.get_height(); ++y )
 	{
-		m_terminal->print( position( area.ul.x, area.ul.y + y ), color, border_chars[2] );
-		m_terminal->print( position( area.lr.x, area.ul.y + y ), color, border_chars[3] );
+		m_terminal->print( position( area.ul.x, area.ul.y + y ), color, term_color(), border_chars[2] );
+		m_terminal->print( position( area.lr.x, area.ul.y + y ), color, term_color(), border_chars[3] );
 	}
 
-	m_terminal->print( area.ul, color, border_chars[4] );
-	m_terminal->print( area.ur(), color, border_chars[5] );
-	m_terminal->print( area.ll(), color, border_chars[6] );
-	m_terminal->print( area.lr, color, border_chars[7] );
+	m_terminal->print( area.ul, color,   term_color(), border_chars[4] );
+	m_terminal->print( area.ur(), color, term_color(), border_chars[5] );
+	m_terminal->print( area.ll(), color, term_color(), border_chars[6] );
+	m_terminal->print( area.lr, color,   term_color(), border_chars[7] );
 }
Index: trunk/src/core/term_color.cc
===================================================================
--- trunk/src/core/term_color.cc	(revision 514)
+++ trunk/src/core/term_color.cc	(revision 514)
@@ -0,0 +1,30 @@
+// Copyright (C) 2016-2016 ChaosForge Ltd
+// http://chaosforge.org/
+//
+// This file is part of Nova libraries. 
+// For conditions of distribution and use, see copying.txt file in root folder.
+
+#include "nv/core/term_color.hh"
+
+using namespace nv;
+
+term_color term_color::s_default_colors[17] = {
+	term_color( term_color::BLACK,        u8vec3(   0,   0,   0 ) ),
+	term_color( term_color::BLUE,         u8vec3(   0,   0, 160 ) ),
+	term_color( term_color::GREEN,        u8vec3(   0, 160,   0 ) ),
+	term_color( term_color::CYAN,         u8vec3(   0, 160, 160 ) ),
+	term_color( term_color::RED,          u8vec3( 160,   0,   0 ) ),
+	term_color( term_color::MAGENTA,      u8vec3( 160,   0, 160 ) ),
+	term_color( term_color::BROWN,        u8vec3( 160, 160,   0 ) ),
+	term_color( term_color::LIGHTGRAY,    u8vec3( 216, 216, 216 ) ),
+	term_color( term_color::DARKGRAY,     u8vec3( 127, 127, 127 ) ),
+	term_color( term_color::LIGHTBLUE,    u8vec3(   0,   0, 255 ) ),
+	term_color( term_color::LIGHTGREEN,   u8vec3(   0, 255,   0 ) ),
+	term_color( term_color::LIGHTCYAN,    u8vec3(   0, 255, 255 ) ),
+	term_color( term_color::LIGHTRED,     u8vec3( 255,   0,   0 ) ),
+	term_color( term_color::LIGHTMAGENTA, u8vec3( 255,   0, 255 ) ),
+	term_color( term_color::YELLOW,       u8vec3( 255, 255,   0 ) ),
+	term_color( term_color::WHITE,        u8vec3( 255, 255, 255 ) ),
+	term_color( term_color::BLACK,        u8vec4( 0,   0,   0,  0 ) ),
+};
+
