Пример #1
0
void BRParser::tag_start(const QString &tag, const list<QString> &attrs)
{
    if (m_bSkip)
        return;
    if (tag == "body") {
        m_str = "";
        add_color();
        return;
    }
    if (tag == "p") {
        return;
    }
    if (tag == "br") {
        m_str += "</span>\n";
        add_color();
        return;
    }
    m_str += "<";
    m_str += tag;
    for (list<QString>::const_iterator it = attrs.begin(); it != attrs.end(); ++it) {
        QString name = *it;
        ++it;
        QString value = *it;
        m_str += " ";
        m_str += name;
        if (!value.isEmpty()) {
            m_str += "=\'";
            m_str += quoteString(value);
            m_str += "\'";
        }
    }
    m_str += ">";
}
Пример #2
0
t_color		apply_refraction(t_ray *start, t_scene *scene, t_hit drawn_pixel, double noise)
{
	double	refract_indice;
	t_color	tmp_color;
	int test;
	tmp_color = drawn_pixel.color;
	if (drawn_pixel.t_max == drawn_pixel.t)
	{
		refract_indice = drawn_pixel.ref_index;
		test = -1;
	}
	else
	{
		test = 1;
		refract_indice = 1.0 / drawn_pixel.ref_index;
	}
	*start = find_refract_vect(start, drawn_pixel, refract_indice, test);
	if (get_length(start->dir) != 0)
	{
		if (scene->is_real == CARTOON && is_black_edge(&drawn_pixel))
		{
			tmp_color = init_color(0, 0, 0);
			return (tmp_color);
		}
		else
			tmp_color = add_color(tmp_color, color_render(scene, start, noise, NULL));
	}
	check_color(&tmp_color);
	return (tmp_color);
}
Пример #3
0
static char		*parse_prompt_tokens(t_list *tokens)
{
	size_t		size;
	char		*str;
	size_t		i;
	size_t		len;
	t_token		*token;

	size = total_size(tokens);
	str = (char *)malloc(sizeof(char) * (size + 1));
	i = 0;
	while (tokens)
	{
		token = get_token(&tokens);
		len = ft_strlen(token->lexeme);
		if (token->type == CHARS)
			ft_strncpy(str + i, token->lexeme, len);
		else
		{
			add_color(token, str + i, len);
			i += COLOR_STR_SIZE;
		}
		i += len;
		tokens = tokens->next;
	}
	str[i] = '\0';
	return (str);
}
Пример #4
0
static struct cmd_results *parse_border_color(struct border_colors *border_colors, const char *cmd_name, int argc, char **argv) {
	struct cmd_results *error = NULL;
	if (argc != 5) {
		return cmd_results_new(CMD_INVALID, cmd_name, "Requires exactly five color values");
	}

	uint32_t colors[5];
	int i;
	for (i = 0; i < 5; i++) {
		char buffer[10];
		error = add_color(cmd_name, buffer, argv[i]);
		if (error) {
			return error;
		}
		colors[i] = strtoul(buffer+1, NULL, 16);
	}

	border_colors->border = colors[0];
	border_colors->background = colors[1];
	border_colors->text = colors[2];
	border_colors->indicator = colors[3];
	border_colors->child_border = colors[4];

	return cmd_results_new(CMD_SUCCESS, NULL, NULL);
}
Пример #5
0
static void store_color(int reset_flag)
{								/* store color pass, if any */
    if( !cur_screen || !cur_pct)
		cur_reverse = 1;
	else
		cur_reverse = 0;
#ifdef TRACE
    if(color_trace)
		p_info(PI_TRACE, "store clr= %d, plate= %d, fn= %s, ang= %3.2f, scr= %d, pct= %3.3f\n",
			   cur_color_id,cur_plate,cur_shape,cur_angle,cur_screen,cur_pct);
#endif
	add_color();
	if (reset_flag)
	{
		cur_plate = -1;    
		strcpy(cur_shape, "dot");
		cur_angle = 45.;
		cur_screen = 72;
		cur_pct = 100.0;
		cur_reverse = 0;
		strcpy(cur_op, "false");
		strcpy(cur_color_name,"");
		strcpy(cur_type,"process");
	}
}								/* end store color */
Пример #6
0
void		print_files_long(t_files *file, char *options,
		int links_column, int size_column)
{
	ft_putchar(file->type);
	ft_putstr(file->permissions);
	ft_putchar(' ');
	pad_with_spaces(file, links_column, 1);
	ft_putnbr(file->links);
	ft_putchar(' ');
	if (!ft_strchr(options, 'g'))
	{
		ft_putstr(file->owner);
		ft_putchar(' ');
	}
	ft_putstr(file->group);
	ft_putchar(' ');
	print_file_size(file, size_column);
	ft_putchar(' ');
	ft_putstr(file->date);
	ft_putchar(' ');
	if (ft_strchr(options, 'G'))
		add_color(file);
	ft_putstr(file->name);
	ft_putstr("\033[0m");
	if (file->type == 'l')
		print_link(file);
	ft_putchar('\n');
}
Пример #7
0
EditorSectorMenu::EditorSectorMenu() :
  sector(Editor::current()->currentsector),
  sector_name_ptr(sector->get_name_ptr()),
  original_name(*sector_name_ptr),
  size(sector->get_editor_size()),
  new_size(size)
{
  add_label(_("Sector") + " " + sector->get_name());
  add_hl();
  add_textfield(_("Name"), sector_name_ptr);
  add_script(_("Initialization script"), sector->get_init_script_ptr());
  add_color(_("Ambient light"), sector->get_ambient_light_ptr());
  add_numfield(_("Gravity"), &sector->gravity);

  std::vector<std::string> music_formats;
  music_formats.push_back(".ogg");
  music_formats.push_back(".music");
  add_file(_("Music"), &sector->music, music_formats);

  add_hl();
  add_intfield(_("Width"), &(new_size.width));
  add_intfield(_("Height"), &(new_size.height));
  add_entry(MNID_RESIZESECTOR, _("Resize"));

  add_hl();
  add_back(_("OK"));
}
Пример #8
0
void		print_files_short(t_files *file, char *options)
{
	if (ft_strchr(options, 'G'))
		add_color(file);
	ft_putstr(file->name);
	ft_putstr("\033[0m");
	ft_putchar('\n');
}
Пример #9
0
static void
init_pastels() {
    int i;
    /* very light colors */
    for (i = 6; i >= 0; --i)
	add_color((i&4) ? 0xff : 0xf0,
		  (i&2) ? 0xff : 0xf0,
		  (i&1) ? 0xff : 0xf0, TRUE);
}
Пример #10
0
static inline void            save(t_image *screen, int x, int y, unsigned int rgb)
{
    size_t           pos;

    pos = (x) * (screen->bpp / 8) + (y) * screen->size_line;
    rgb = add_color(*(unsigned int*)(screen->stack
                                     + pos * sizeof(unsigned char)), rgb);
    *(unsigned int*)(screen->stack + pos * sizeof(unsigned char)) = rgb;
}
Пример #11
0
static void
handle_biggest_offenders(int testtblsize, int maxcolors) {
    int i, j;
    float dEthresh = 0;
    CmapEntry *pCmap;

    num_offenders = 0;

    for (pCmap = virt_cmap, i = 0; i < num_virt_cmap_entries; i++, pCmap++) {
	if (pCmap->nextidx < 0) {
	    continue;
	}
	if (num_offenders == MAX_OFFENDERS
	    && pCmap->dE < offenders[MAX_OFFENDERS-1]->dE)
	{
	    continue;
	}
	find_nearest(pCmap);
	insert_in_list(pCmap);
    }

    if (num_offenders > 0) {
	dEthresh = offenders[num_offenders-1]->dE;
    }

    for (i = 0; (total < maxcolors) && (i < num_offenders); ++i) {
	pCmap = offenders[i];

	if (!pCmap) continue;

	j = add_color(pCmap->red, pCmap->green, pCmap->blue, FALSE);

	if (j) {
	    for (j = i+1; j < num_offenders; ++j) {
		float dE;

		pCmap = offenders[j];
		if (!pCmap) {
		    continue;
		}

		find_nearest(pCmap);

		dE = pCmap->dE;
		if (dE < dEthresh) {
		    offenders[j] = 0;
		} else {
		    if (offenders[i+1] == 0 || dE > offenders[i+1]->dE) {
			offenders[j] = offenders[i+1];
			offenders[i+1] = pCmap;
		    }
		}
	    }
	}
    }
}
Пример #12
0
void Script_Graph_Style::copy_style(const Graph &copy)
{
    m_crossing_style.from_style(copy.default_edge_style());
    m_cusp_style.from_style(copy.default_node_style());

    m_colors.clear();
    foreach(QColor c, copy.colors())
        add_color(c);
    emit colors_changed();
}
Пример #13
0
static void
init_primaries() {
    int r, g, b;

    for (r = 0; r < 256; r += (r?128:127)) {
	for (g = 0; g < 256; g += (g?128:127)) {
	    for (b = 0; b < 256; b += (b?128:127)) {
		if ((r == g) && (g == b)) continue; /* black or white */
		add_color(r, g, b, TRUE);
	    }
	}
    }
}
Пример #14
0
Script_Graph_Style::Script_Graph_Style(const Script_Graph_Style &copy)
    : QObject(copy.parent()),
      m_crossing_style(copy.m_crossing_style.style()),
      m_cusp_style(copy.m_cusp_style.style())
{
    connect(&m_crossing_style,SIGNAL(changed(Edge_Style,Edge_Style)),
            SLOT(emit_style_changed(Edge_Style,Edge_Style)));
    connect(&m_cusp_style,SIGNAL(changed(Node_Style,Node_Style)),
            SLOT(emit_style_changed(Node_Style,Node_Style)));

    foreach(Script_Color* c, copy.m_colors)
        add_color(*c);
}
Пример #15
0
Script_Graph_Style::Script_Graph_Style(Edge_Style crossing_style,
                                       Node_Style cusp_style,
                                       QList<QColor> colors )
    : m_crossing_style(crossing_style), m_cusp_style(cusp_style)
{
    connect(&m_crossing_style,SIGNAL(changed(Edge_Style,Edge_Style)),
            SLOT(emit_style_changed(Edge_Style,Edge_Style)));
    connect(&m_cusp_style,SIGNAL(changed(Node_Style,Node_Style)),
            SLOT(emit_style_changed(Node_Style,Node_Style)));

    foreach(QColor c, colors)
        add_color(c);

}
Пример #16
0
void BRParser::tag_end(const QString &tag)
{
    if (m_bSkip)
        return;
    if (tag == "body") {
        m_bSkip = true;
        return;
    }
    if (tag == "p") {
        m_str += "</span>\n";
        add_color();
        return;
    }
    m_str += "</";
    m_str += tag;
    m_str += ">";
}
Пример #17
0
struct cmd_results *cmd_client_background(int argc, char **argv) {
	char buffer[10];
	struct cmd_results *error = NULL;
	uint32_t background;

	if (argc != 1) {
		return cmd_results_new(CMD_INVALID, "client.background", "Requires exactly one color value");
	}

	error = add_color("client.background", buffer, argv[0]);
	if (error) {
		return error;
	}

	background = strtoul(buffer+1, NULL, 16);
	config->border_colors.background = background;
	return cmd_results_new(CMD_SUCCESS, NULL, NULL);
}
Пример #18
0
t_color		reflection(t_scene *scene, t_inter *inter, t_color pixel_color, int level)
{
	t_color	reflec;
	t_ray	ray;

	if (level >= MAX_REFLEC)
		return (pixel_color);
	if (inter->obj->mat->reflec > 0)
	{
		ray.o = inter->pos;
		ray.dir = inter->reflect;
		reflec = ray_go_to_the_world_and_dont_forget_to_draw(scene, &ray, level + 1);
		reflec = add_color(mult_color(reflec, inter->obj->mat->reflec),
							mult_color(pixel_color, (1 - inter->obj->mat->reflec)));
	}
	else
		reflec = pixel_color;
	return (reflec);
}
Пример #19
0
static	char		*a_rights(struct stat *st)
{
	char	*rights;

	rights = str_dup("---");
	if (rights)
	{
		if (st->st_mode & S_IROTH)
			rights[0] = 'r';
		if (st->st_mode & S_IWOTH)
			rights[1] = 'w';
		if (st->st_mode & S_IXOTH)
			rights[2] = 'x';
		return (str_join(add_color(rights, YELLOW), "  "));
	}
	else
		perror("ft_ls error: ");
	return (NULL);
}
Пример #20
0
static	char		*g_rights(struct stat *st)
{
	char	*rights;

	rights = str_dup("---");
	if (rights)
	{
		if (st->st_mode & S_IRGRP)
			rights[0] = 'r';
		if (st->st_mode & S_IWGRP)
			rights[1] = 'w';
		if (st->st_mode & S_IXGRP)
			rights[2] = 'x';
		return (add_color(rights, MAGENTA));
	}
	else
		perror("ft_ls error: ");
	return (NULL);
}
Пример #21
0
static	char		*u_rights(struct stat *st)
{
	char	*rights;

	rights = str_dup("---");
	if (rights)
	{
		if (st->st_mode & S_IRUSR)
			rights[0] = 'r';
		if (st->st_mode & S_IWUSR)
			rights[1] = 'w';
		if (st->st_mode & S_IXUSR)
			rights[2] = 'x';
		return (add_color(rights, CYAN));
	}
	else
		perror("ft_ls error: ");
	return (NULL);
}
Пример #22
0
void		draw(t_tool *t, double x, double y)
{
	t_ray	*ray;
	double	x0;
	double	y0;
	t_color	*final_color;

	final_color = new_color();
	x0 = x;
	while (x0 <= x + 0.5)
	{
		y0 = y;
		while (y0 <= y + 0.5)
		{
			ray = get_ray(t, x0, y0);
			add_color(final_color, draw_suite(ray, t));
			y0 += 0.5;
		}
		x0 += 0.5;
	}
	div_color(final_color, 4);
	normalize_color(final_color);
	pixel_put_to_image(t, x, y, final_color);
}
Пример #23
0
input_t dialog_mouse_command(MEVENT event)
{
	Vector2i pos = abs2rel((Vector2i) { event.y, event.x }, dialog_pos), tl;
	bool del = FALSE;
	color_t i;

	if (cidx != CIDX_DEFAULT) {
		if (area_contains(left_pos, DIALOG_BUTTON_WIDTH, DIALOG_BUTTON_HEIGHT, pos)) {
			picked_turn = TURN_LEFT;
			goto exit;
		}
		if (area_contains(right_pos, DIALOG_BUTTON_WIDTH, DIALOG_BUTTON_HEIGHT, pos)) {
			picked_turn = TURN_RIGHT;
			goto exit;
		}
	}

	if (cidx >= 0 && area_contains(delete_pos, DIALOG_DELETE_WIDTH, DIALOG_DELETE_HEIGHT, pos)) {
		del = TRUE;
		goto exit;
	}

	for (i = 0; i < COLOR_COUNT; i++) {
		tl = get_dialog_tile_pos(i);
		if ((cidx == CIDX_DEFAULT || !color_exists(stgs.colors, i))
				&& area_contains(tl, DIALOG_TILE_SIZE, DIALOG_TILE_SIZE, pos)) {
			picked_color = i;
			goto exit;
		}
	}

	return INPUT_NO_CHANGE;

exit:
	switch (cidx) {
	case CIDX_NEWCOLOR:
		if (picked_color != COLOR_NONE && picked_turn != TURN_NONE) {
			add_color(stgs.colors, picked_color, picked_turn);
			close_dialog();
		}
		return INPUT_MENU_CHANGED;
	case CIDX_DEFAULT:
		assert(stgs.colors && stgs.linked_sim->colors);
		colors_delete(stgs.colors);
		stgs.colors = colors_new(picked_color);
		close_dialog();
		return clear_simulation();
	default:
		if (cidx < 0 || cidx >= COLOR_COUNT) {
			return INPUT_NO_CHANGE;
		}
		if (picked_turn != TURN_NONE) {
			if (picked_color != COLOR_NONE) {
				set_color(stgs.colors, cidx, picked_color, picked_turn);
			} else {
				set_turn(stgs.colors, cidx, picked_turn);
			}
			close_dialog();
			return INPUT_MENU_CHANGED;
		} else if (del) {
			remove_color(stgs.colors, get_color_at(stgs.colors, cidx));
			if (!has_enough_colors(stgs.colors)) {
				simulation_halt(stgs.linked_sim);
			}
			close_dialog();
		}
		return INPUT_MENU_CHANGED;
	}
}
Пример #24
0
BRParser::BRParser(unsigned color)
{
    m_color = color;
    m_bSkip = false;
    add_color();
}
void MarchingCubes::create_marching_cubes_from_array(const T* scalar_field, CVector mesh_dimensions, CVector box_length, double threshold, bool larger_than) {
    int nx = mesh_dimensions.x;
    int ny = mesh_dimensions.y;
    int nz = mesh_dimensions.z;
    initialize(nx*ny*nz);
    num_vertices = 0;
    num_triangles = 0;

    Random *rnd = new Random(-time(NULL), 0, 0);


    float r = 111/255.0;
    float g = 133/255.0;
    float b = 144/255.0;

//    float r = rnd->next_double();
//    float g = rnd->next_double();
//    float b = rnd->next_double();

    CIsoSurface<T> surf;
    surf.GenerateSurface(scalar_field,threshold,nx-1,ny-1,nz-1,box_length.x, box_length.y, box_length.z, larger_than);

    for(int triangle=0; triangle<surf.m_nTriangles; triangle++) {
        unsigned int p1_index = surf.m_piTriangleIndices[3*triangle+0];
        unsigned int p2_index = surf.m_piTriangleIndices[3*triangle+1];
        unsigned int p3_index = surf.m_piTriangleIndices[3*triangle+2];

        CVector p1(surf.m_ppt3dVertices[p1_index][0], surf.m_ppt3dVertices[p1_index][1], surf.m_ppt3dVertices[p1_index][2]);
        CVector p2(surf.m_ppt3dVertices[p2_index][0], surf.m_ppt3dVertices[p2_index][1], surf.m_ppt3dVertices[p2_index][2]);
        CVector p3(surf.m_ppt3dVertices[p3_index][0], surf.m_ppt3dVertices[p3_index][1], surf.m_ppt3dVertices[p3_index][2]);
        VECTOR3D &norm1 = surf.m_pvec3dNormals[p1_index];
        VECTOR3D &norm2 = surf.m_pvec3dNormals[p2_index];
        VECTOR3D &norm3 = surf.m_pvec3dNormals[p3_index];

//        CVector n1 = (p2 - p1).cross(p3 - p1).normalize();
//        CVector n2 = (p2 - p1).cross(p3 - p1).normalize();
//        CVector n3 = (p2 - p1).cross(p3 - p1).normalize();

        CVector n1(norm1[0], norm1[1], norm1[2]);
        CVector n2(norm2[0], norm2[1], norm2[2]);
        CVector n3(norm3[0], norm3[1], norm3[2]);

        CVector color(r,g,b);

//        n1 = n1*(-1);
//        n2 = n2*(-1);
//        n3 = n3*(-1);

        add_vertex(p1);
        add_normal(n1);
        add_color(color, 1.0);

        add_vertex(p2);
        add_normal(n2);
        add_color(color, 1.0);

        add_vertex(p3);
        add_normal(n3);
        add_color(color, 1.0);
        continue;
        n1 = n1*(-1);
        n2 = n2*(-1);
        n3 = n3*(-1);

        p1 = p1+n1*0.01;
        p2 = p2+n2*0.01;
        p3 = p3+n3*0.01;

        add_vertex(p1);
        add_normal(n1);
        add_color(color, 1.0);

        add_vertex(p2);
        add_normal(n2);
        add_color(color, 1.0);

        add_vertex(p3);
        add_normal(n3);
        add_color(color, 1.0);
    }

    cout << "Marching cubes created with " << surf.m_nTriangles << " triangles." << endl;
}
Пример #26
0
void
read_color_scheme_file()
{

	FILE *fp;
	char config_file[PATH_MAX];
	char line[MAX_LEN];
	char *s1 = NULL;
	char *s2 = NULL;
	char *s3 = NULL;
	char *sx = NULL;
	int args;
	struct stat stat_buf;

	snprintf(config_file, sizeof(config_file), "%s/colorschemes",
				  cfg.config_dir);

	if(stat(config_file, &stat_buf) == 0)
		curr_stats.colorscheme_file_mtime = stat_buf.st_mtime;
	else
		curr_stats.config_file_mtime = 0;

	if((fp = fopen(config_file, "r")) == NULL)
	{
		load_default_colors();

		cfg.color_scheme_num++;
		cfg.color_pairs_num = 12;
		return;
	}

	while(fgets(line, MAX_LEN, fp))
	{
		args = 0;

		if(line[0] == '#')
			continue;

		if((sx = s1 = strchr(line, '=')) != NULL)
		{
			s1++;
			chomp(s1);
			*sx = '\0';
			args = 1;
		}
		else
			continue;
		if((sx = s2 = strchr(s1, '=')) != NULL)
		{
			s2++;
			chomp(s2);
			*sx = '\0';
			args = 2;
		}
		if((args == 2) && ((sx = s3 = strchr(s2, '=')) != NULL))
		{
			s3++;
			chomp(s3);
			*sx = '\0';
			args = 3;
		}

		if(args == 1)
		{
			if(!strcmp(line, "COLORSCHEME"))
			{

				//check if last colorscheme is complete and pad it before starting
				// a new scheme
				// verify_scheme();

					//col_schemes = (Col_scheme *)realloc(col_schemes,
					//		sizeof(Col_scheme *) +1);

				snprintf(col_schemes[cfg.color_scheme_num].name,
						NAME_MAX, "%s", s1);

				cfg.color_scheme_num++;

				if (cfg.color_scheme_num > 8)
					break;

				continue;

			}
			if(!strcmp(line, "DIRECTORY"))
			{
				snprintf(col_schemes[cfg.color_scheme_num - 1].dir,
							PATH_MAX, "%s", s1);

				continue;
			}
		}
		if(!strcmp(line, "COLOR") && args == 3)
		{
			add_color(s1, s2, s3);
		}

	}

	fclose(fp);

	//verify_color_schemes();
	return;
}
Пример #27
0
static void
init_grays() {
    int i;
    for (i = 15; i < 255; i += 16)
	add_color(i, i, i, TRUE);
}
Пример #28
0
void color_manager::load_default()
{
    //        Color         Name      Color Pair      Invert
    add_color(def_c_black, "c_black", COLOR_PAIR(30), def_i_black );
    add_color(def_c_white, "c_white", COLOR_PAIR(1) | A_BOLD, def_i_white );
    add_color(def_c_ltgray, "c_ltgray", COLOR_PAIR(1), def_i_ltgray );
    add_color(def_c_dkgray, "c_dkgray", COLOR_PAIR(30) | A_BOLD, def_i_dkgray );
    add_color(def_c_red, "c_red", COLOR_PAIR(2), def_i_red );
    add_color(def_c_green, "c_green", COLOR_PAIR(3), def_i_green );
    add_color(def_c_blue, "c_blue", COLOR_PAIR(4), def_i_blue );
    add_color(def_c_cyan, "c_cyan", COLOR_PAIR(5), def_i_cyan );
    add_color(def_c_magenta, "c_magenta", COLOR_PAIR(6), def_i_magenta );
    add_color(def_c_brown, "c_brown", COLOR_PAIR(7), def_i_brown );
    add_color(def_c_ltred, "c_ltred", COLOR_PAIR(2) | A_BOLD, def_i_ltred );
    add_color(def_c_ltgreen, "c_ltgreen", COLOR_PAIR(3) | A_BOLD, def_i_ltgreen );
    add_color(def_c_ltblue, "c_ltblue", COLOR_PAIR(4) | A_BOLD, def_i_ltblue );
    add_color(def_c_ltcyan, "c_ltcyan", COLOR_PAIR(5) | A_BOLD, def_i_ltcyan );
    add_color(def_c_pink, "c_pink", COLOR_PAIR(6) | A_BOLD, def_i_pink );
    add_color(def_c_yellow, "c_yellow", COLOR_PAIR(7) | A_BOLD, def_i_yellow );

    add_color(def_h_black, "h_black", COLOR_PAIR(20), def_c_blue );
    add_color(def_h_white, "h_white", COLOR_PAIR(15) | A_BOLD, def_c_ltblue_white );
    add_color(def_h_ltgray, "h_ltgray", COLOR_PAIR(15), def_c_blue_white );
    add_color(def_h_dkgray, "h_dkgray", COLOR_PAIR(20) | A_BOLD, def_c_ltblue );
    add_color(def_h_red, "h_red", COLOR_PAIR(16), def_c_blue_red );
    add_color(def_h_green, "h_green", COLOR_PAIR(17), def_c_blue_green );
    add_color(def_h_blue, "h_blue", COLOR_PAIR(20), def_h_blue );
    add_color(def_h_cyan, "h_cyan", COLOR_PAIR(19), def_c_blue_cyan );
    add_color(def_h_magenta, "h_magenta", COLOR_PAIR(21), def_c_blue_magenta );
    add_color(def_h_brown, "h_brown", COLOR_PAIR(22), def_c_blue_yellow );
    add_color(def_h_ltred, "h_ltred", COLOR_PAIR(16) | A_BOLD, def_c_ltblue_red );
    add_color(def_h_ltgreen, "h_ltgreen", COLOR_PAIR(17) | A_BOLD, def_c_ltblue_green );
    add_color(def_h_ltblue, "h_ltblue", COLOR_PAIR(18) | A_BOLD, def_h_ltblue );
    add_color(def_h_ltcyan, "h_ltcyan", COLOR_PAIR(19) | A_BOLD, def_c_ltblue_cyan );
    add_color(def_h_pink, "h_pink", COLOR_PAIR(21) | A_BOLD, def_c_ltblue_magenta );
    add_color(def_h_yellow, "h_yellow", COLOR_PAIR(22) | A_BOLD, def_c_ltblue_yellow );

    add_color(def_i_black, "i_black", COLOR_PAIR(32), def_c_black );
    add_color(def_i_white, "i_white", COLOR_PAIR(8) | A_BLINK, def_c_white );
    add_color(def_i_ltgray, "i_ltgray", COLOR_PAIR(8), def_c_ltgray );
    add_color(def_i_dkgray, "i_dkgray", COLOR_PAIR(32) | A_BLINK, def_c_dkgray );
    add_color(def_i_red, "i_red", COLOR_PAIR(9), def_c_red );
    add_color(def_i_green, "i_green", COLOR_PAIR(10), def_c_green );
    add_color(def_i_blue, "i_blue", COLOR_PAIR(11), def_c_blue );
    add_color(def_i_cyan, "i_cyan", COLOR_PAIR(12), def_c_cyan );
    add_color(def_i_magenta, "i_magenta", COLOR_PAIR(13), def_c_magenta );
    add_color(def_i_brown, "i_brown", COLOR_PAIR(14), def_c_brown );
    add_color(def_i_ltred, "i_ltred", COLOR_PAIR(9) | A_BLINK, def_c_ltred );
    add_color(def_i_ltgreen, "i_ltgreen", COLOR_PAIR(10) | A_BLINK, def_c_ltgreen );
    add_color(def_i_ltblue, "i_ltblue", COLOR_PAIR(11) | A_BLINK, def_c_ltblue );
    add_color(def_i_ltcyan, "i_ltcyan", COLOR_PAIR(12) | A_BLINK, def_c_ltcyan );
    add_color(def_i_pink, "i_pink", COLOR_PAIR(13) | A_BLINK, def_c_pink );
    add_color(def_i_yellow, "i_yellow", COLOR_PAIR(14) | A_BLINK, def_c_yellow );

    add_color(def_c_white_red, "c_white_red", COLOR_PAIR(23) | A_BOLD, def_c_red_white );
    add_color(def_c_ltgray_red, "c_ltgray_red", COLOR_PAIR(23), def_c_ltred_white );
    add_color(def_c_dkgray_red, "c_dkgray_red", COLOR_PAIR(9), def_c_dkgray_red );
    add_color(def_c_red_red, "c_red_red", COLOR_PAIR(9), def_c_red_red );
    add_color(def_c_green_red, "c_green_red", COLOR_PAIR(25), def_c_red_green );
    add_color(def_c_blue_red, "c_blue_red", COLOR_PAIR(26), def_h_red );
    add_color(def_c_cyan_red, "c_cyan_red", COLOR_PAIR(27), def_c_red_cyan );
    add_color(def_c_magenta_red, "c_magenta_red", COLOR_PAIR(28), def_c_red_magenta );
    add_color(def_c_brown_red, "c_brown_red", COLOR_PAIR(29), def_c_red_yellow );
    add_color(def_c_ltred_red, "c_ltred_red", COLOR_PAIR(24) | A_BOLD, def_c_red_red );
    add_color(def_c_ltgreen_red, "c_ltgreen_red", COLOR_PAIR(25) | A_BOLD, def_c_ltred_green );
    add_color(def_c_ltblue_red, "c_ltblue_red", COLOR_PAIR(26) | A_BOLD, def_h_ltred );
    add_color(def_c_ltcyan_red, "c_ltcyan_red", COLOR_PAIR(27) | A_BOLD, def_c_ltred_cyan );
    add_color(def_c_pink_red, "c_pink_red", COLOR_PAIR(28) | A_BOLD, def_c_ltred_magenta );
    add_color(def_c_yellow_red, "c_yellow_red", COLOR_PAIR(29) | A_BOLD, def_c_red_yellow );

    add_color(def_c_unset, "c_unset", COLOR_PAIR(31), def_c_unset );

    add_color(def_c_black_white, "c_black_white", COLOR_PAIR(32), def_c_ltgray );
    add_color(def_c_dkgray_white, "c_dkgray_white", COLOR_PAIR(32) | A_BOLD, def_c_white );
    add_color(def_c_ltgray_white, "c_ltgray_white", COLOR_PAIR(33), def_c_ltgray_white );
    add_color(def_c_white_white, "c_white_white", COLOR_PAIR(33) | A_BOLD, def_c_white_white );
    add_color(def_c_red_white, "c_red_white", COLOR_PAIR(34), def_c_white_red );
    add_color(def_c_ltred_white, "c_ltred_white", COLOR_PAIR(34) | A_BOLD, def_c_ltgray_red );
    add_color(def_c_green_white, "c_green_white", COLOR_PAIR(35), def_c_ltgray_green );
    add_color(def_c_ltgreen_white, "c_ltgreen_white", COLOR_PAIR(35) | A_BOLD, def_c_white_green );
    add_color(def_c_brown_white, "c_brown_white", COLOR_PAIR(36), def_c_ltgray_yellow );
    add_color(def_c_yellow_white, "c_yellow_white", COLOR_PAIR(36) | A_BOLD, def_c_white_yellow );
    add_color(def_c_blue_white, "c_blue_white", COLOR_PAIR(37), def_h_ltgray );
    add_color(def_c_ltblue_white, "c_ltblue_white", COLOR_PAIR(37) | A_BOLD, def_h_white );
    add_color(def_c_magenta_white, "c_magenta_white", COLOR_PAIR(38), def_c_ltgray_magenta );
    add_color(def_c_pink_white, "c_pink_white", COLOR_PAIR(38) | A_BOLD, def_c_white_magenta );
    add_color(def_c_cyan_white, "c_cyan_white", COLOR_PAIR(39), def_c_ltgray_cyan );
    add_color(def_c_ltcyan_white, "c_ltcyan_white", COLOR_PAIR(39) | A_BOLD, def_c_white_cyan );

    add_color(def_c_black_green, "c_black_green", COLOR_PAIR(40), def_c_green );
    add_color(def_c_dkgray_green, "c_dkgray_green", COLOR_PAIR(40) | A_BOLD, def_c_ltgreen );
    add_color(def_c_ltgray_green, "c_ltgray_green", COLOR_PAIR(41), def_c_green_white );
    add_color(def_c_white_green, "c_white_green", COLOR_PAIR(41) | A_BOLD, def_c_ltgreen_white );
    add_color(def_c_red_green, "c_red_green", COLOR_PAIR(42), def_c_green_red );
    add_color(def_c_ltred_green, "c_ltred_green", COLOR_PAIR(42) | A_BOLD, def_c_ltgreen_red );
    add_color(def_c_green_green, "c_green_green", COLOR_PAIR(43), def_c_green_green );
    add_color(def_c_ltgreen_green, "c_ltgreen_green", COLOR_PAIR(43) | A_BOLD, def_c_ltgreen_green );
    add_color(def_c_brown_green, "c_brown_green", COLOR_PAIR(44), def_c_green_yellow );
    add_color(def_c_yellow_green, "c_yellow_green", COLOR_PAIR(44) | A_BOLD, def_c_ltgreen_yellow );
    add_color(def_c_blue_green, "c_blue_green", COLOR_PAIR(45), def_h_green );
    add_color(def_c_ltblue_green, "c_ltblue_green", COLOR_PAIR(45) | A_BOLD, def_h_ltgreen );
    add_color(def_c_magenta_green, "c_magenta_green", COLOR_PAIR(46), def_c_green_magenta );
    add_color(def_c_pink_green, "c_pink_green", COLOR_PAIR(46) | A_BOLD, def_c_ltgreen_magenta );
    add_color(def_c_cyan_green, "c_cyan_green", COLOR_PAIR(47), def_c_green_cyan );
    add_color(def_c_ltcyan_green, "c_ltcyan_green", COLOR_PAIR(47) | A_BOLD, def_c_ltgreen_cyan );

    add_color(def_c_black_yellow, "c_black_yellow", COLOR_PAIR(48), def_c_brown );
    add_color(def_c_dkgray_yellow, "c_dkgray_yellow", COLOR_PAIR(48) | A_BOLD, def_c_yellow );
    add_color(def_c_ltgray_yellow, "c_ltgray_yellow", COLOR_PAIR(49), def_c_brown_white );
    add_color(def_c_white_yellow, "c_white_yellow", COLOR_PAIR(49) | A_BOLD, def_c_yellow_white );
    add_color(def_c_red_yellow, "c_red_yellow", COLOR_PAIR(50), def_c_yellow_red );
    add_color(def_c_ltred_yellow, "c_ltred_yellow", COLOR_PAIR(50) | A_BOLD, def_c_yellow_red );
    add_color(def_c_green_yellow, "c_green_yellow", COLOR_PAIR(51), def_c_brown_green );
    add_color(def_c_ltgreen_yellow, "c_ltgreen_yellow", COLOR_PAIR(51) | A_BOLD, def_c_yellow_green );
    add_color(def_c_brown_yellow, "c_brown_yellow", COLOR_PAIR(52), def_c_brown_yellow );
    add_color(def_c_yellow_yellow, "c_yellow_yellow", COLOR_PAIR(52) | A_BOLD, def_c_yellow_yellow );
    add_color(def_c_blue_yellow, "c_blue_yellow", COLOR_PAIR(53), def_h_brown );
    add_color(def_c_ltblue_yellow, "c_ltblue_yellow", COLOR_PAIR(53) | A_BOLD, def_h_yellow );
    add_color(def_c_magenta_yellow, "c_magenta_yellow", COLOR_PAIR(54), def_c_brown_magenta );
    add_color(def_c_pink_yellow, "c_pink_yellow", COLOR_PAIR(54) | A_BOLD, def_c_yellow_magenta );
    add_color(def_c_cyan_yellow, "c_cyan_yellow", COLOR_PAIR(55), def_c_brown_cyan );
    add_color(def_c_ltcyan_yellow, "c_ltcyan_yellow", COLOR_PAIR(55) | A_BOLD, def_c_yellow_cyan );

    add_color(def_c_black_magenta, "c_black_magenta", COLOR_PAIR(56), def_c_magenta );
    add_color(def_c_dkgray_magenta, "c_dkgray_magenta", COLOR_PAIR(56) | A_BOLD, def_c_pink );
    add_color(def_c_ltgray_magenta, "c_ltgray_magenta", COLOR_PAIR(57), def_c_magenta_white );
    add_color(def_c_white_magenta, "c_white_magenta", COLOR_PAIR(57) | A_BOLD, def_c_pink_white );
    add_color(def_c_red_magenta, "c_red_magenta", COLOR_PAIR(58), def_c_magenta_red );
    add_color(def_c_ltred_magenta, "c_ltred_magenta", COLOR_PAIR(58) | A_BOLD, def_c_pink_red );
    add_color(def_c_green_magenta, "c_green_magenta", COLOR_PAIR(59), def_c_magenta_green );
    add_color(def_c_ltgreen_magenta, "c_ltgreen_magenta", COLOR_PAIR(59) | A_BOLD, def_c_pink_green );
    add_color(def_c_brown_magenta, "c_brown_magenta", COLOR_PAIR(60), def_c_magenta_yellow );
    add_color(def_c_yellow_magenta, "c_yellow_magenta", COLOR_PAIR(60) | A_BOLD, def_c_pink_yellow );
    add_color(def_c_blue_magenta, "c_blue_magenta", COLOR_PAIR(61), def_h_magenta );
    add_color(def_c_ltblue_magenta, "c_ltblue_magenta", COLOR_PAIR(61) | A_BOLD, def_h_pink );
    add_color(def_c_magenta_magenta, "c_magenta_magenta", COLOR_PAIR(62), def_c_magenta_magenta );
    add_color(def_c_pink_magenta, "c_pink_magenta", COLOR_PAIR(62) | A_BOLD, def_c_pink_magenta );
    add_color(def_c_cyan_magenta, "c_cyan_magenta", COLOR_PAIR(63), def_c_magenta_cyan );
    add_color(def_c_ltcyan_magenta, "c_ltcyan_magenta", COLOR_PAIR(63) | A_BOLD, def_c_pink_cyan );

    add_color(def_c_black_cyan, "c_black_cyan", COLOR_PAIR(64), def_c_cyan );
    add_color(def_c_dkgray_cyan, "c_dkgray_cyan", COLOR_PAIR(64) | A_BOLD, def_c_ltcyan );
    add_color(def_c_ltgray_cyan, "c_ltgray_cyan", COLOR_PAIR(65), def_c_cyan_white );
    add_color(def_c_white_cyan, "c_white_cyan", COLOR_PAIR(65) | A_BOLD, def_c_ltcyan_white );
    add_color(def_c_red_cyan, "c_red_cyan", COLOR_PAIR(66), def_c_cyan_red );
    add_color(def_c_ltred_cyan, "c_ltred_cyan", COLOR_PAIR(66) | A_BOLD, def_c_ltcyan_red );
    add_color(def_c_green_cyan, "c_green_cyan", COLOR_PAIR(67), def_c_cyan_green );
    add_color(def_c_ltgreen_cyan, "c_ltgreen_cyan", COLOR_PAIR(67) | A_BOLD, def_c_ltcyan_green );
    add_color(def_c_brown_cyan, "c_brown_cyan", COLOR_PAIR(68), def_c_cyan_yellow );
    add_color(def_c_yellow_cyan, "c_yellow_cyan", COLOR_PAIR(68) | A_BOLD, def_c_ltcyan_yellow );
    add_color(def_c_blue_cyan, "c_blue_cyan", COLOR_PAIR(69), def_h_cyan );
    add_color(def_c_ltblue_cyan, "c_ltblue_cyan", COLOR_PAIR(69) | A_BOLD, def_h_ltcyan );
    add_color(def_c_magenta_cyan, "c_magenta_cyan", COLOR_PAIR(70), def_c_cyan_magenta );
    add_color(def_c_pink_cyan, "c_pink_cyan", COLOR_PAIR(70) | A_BOLD, def_c_ltcyan_magenta );
    add_color(def_c_cyan_cyan, "c_cyan_cyan", COLOR_PAIR(71), def_c_cyan_cyan );
    add_color(def_c_ltcyan_cyan, "c_ltcyan_cyan", COLOR_PAIR(71) | A_BOLD, def_c_ltcyan_cyan );
}
Пример #29
0
static void
init_mac_palette() {
    add_color(255, 255, 204, TRUE);
    add_color(255, 255, 0,   TRUE);
    add_color(255, 204, 153, TRUE);
    add_color(255, 102, 204, TRUE);
    add_color(255, 102, 51,  TRUE);
    add_color(221, 0, 0,     TRUE);
    add_color(204, 204, 255, TRUE);
    add_color(204, 153, 102, TRUE);
    add_color(153, 255, 255, TRUE);
    add_color(153, 153, 255, TRUE);
    add_color(153, 102, 153, TRUE);
    add_color(153, 0, 102,   TRUE);
    add_color(102, 102, 204, TRUE);
    add_color(51, 255, 153,  TRUE);
    add_color(51, 153, 102,  TRUE);
    add_color(51, 102, 102,  TRUE);
    add_color(51, 51, 102,   TRUE);
    add_color(51, 0, 153,    TRUE);
    add_color(0, 187, 0,     TRUE);
    add_color(0, 153, 255,   TRUE);
    add_color(0, 0, 221,     TRUE);
}
Пример #30
0
void
img_makePalette(int cmapsize, int tablesize, int lookupsize,
		float lscale, float weight,
		int prevclrs, int doMac,
		unsigned char *reds,
		unsigned char *greens,
		unsigned char *blues,
		unsigned char *lookup)
{
    CmapEntry *pCmap;
    int i, ix;
#ifdef STATS
    double ave_dL, ave_dE;
    double max_dL, max_dE;
#endif /* STATS */
#ifdef TIMES
    clock_t start, mid, tbl, end;

    start = clock();
#endif /* TIMES */

    init_matrices();
    Lscale = lscale;
    Weight = weight;

    cmapmax = cmapsize;
    total = 0;
    for (i = 0; i < prevclrs; i++) {
	add_color(reds[i], greens[i], blues[i], TRUE);
    }

    add_color(0, 0, 0, TRUE);
    add_color(255,255,255, TRUE);

    /* do grays next; otherwise find_nearest may break! */
    init_grays();
    if (doMac) {
	init_mac_palette();
    }
    init_pastels();

    init_primaries();

    /* special case some blues */
    add_color(0,0,192,TRUE);
    add_color(0x30,0x20,0x80,TRUE);
    add_color(0x20,0x60,0xc0,TRUE);

    init_virt_cmap(lookupsize, tablesize);

    while (total < cmapsize) {
	handle_biggest_offenders(tablesize, cmapsize);
    }

    memcpy(reds, cmap_r, cmapsize);
    memcpy(greens, cmap_g, cmapsize);
    memcpy(blues, cmap_b, cmapsize);

#ifdef TIMES
    mid = clock();
#endif /* TIMES */

    pCmap = virt_cmap;
    for (i = 0; i < num_virt_cmap_entries; i++, pCmap++) {
	if (pCmap->nextidx < 0) {
	    continue;
	}
	if (pCmap->nextidx < total) {
	    ix = find_nearest(pCmap);
	}
    }

#ifdef TIMES
    tbl = clock();
#endif /* TIMES */

    pCmap = virt_cmap;
    if (tablesize != lookupsize) {
	int r, g, b;
	for (r = 0; r < lookupsize; ++r)
	{
	    for (g = 0; g < lookupsize; ++g)
	    {
		for (b = 0; b < lookupsize; ++b, pCmap++)
		{
		    float L, U, V;
		    float bestd = 0;
		    CmapEntry *pTest;

		    if (pCmap->nextidx >= 0) {
			continue;
		    }
#ifdef DEBUG
		    if (r == g && g == b) {
			jio_fprintf(stderr, "GRAY VALUE!?\n");
		    }
#endif /* DEBUG */
		    L = pCmap->L;
		    U = pCmap->U;
		    V = pCmap->V;
		    for (i = 0; i < 8; i++) {
			int ri, gi, bi;
			float d, t;
			ri = (i & 1) ? prevtest[r] : nexttest[r];
			gi = (i & 2) ? prevtest[g] : nexttest[g];
			bi = (i & 4) ? prevtest[b] : nexttest[b];
			pTest = &virt_cmap[((ri * lookupsize)
					    + gi) * lookupsize
					   + bi];
#ifdef DEBUG
			if (pTest->nextidx < 0) {
			    jio_fprintf(stderr, "OOPS!\n");
			}
#endif /* DEBUG */
			ix = pTest->bestidx;
			t = Ltab[ix] - L; d  = t * t * Lscale;
			if (i != 0 && d > bestd) continue;
			t = Utab[ix] - U; d += t * t;
			if (i != 0 && d > bestd) continue;
			t = Vtab[ix] - V; d += t * t;
			if (i != 0 && d > bestd) continue;
			bestd = d;
			pCmap->bestidx = ix;
		    }
		}
	    }
	}
    }
    pCmap = virt_cmap;
    for (i = 0; i < num_virt_cmap_entries; i++) {
	*lookup++ = (pCmap++)->bestidx;
    }

#ifdef TIMES
    end = clock();
#endif /* TIMES */

#ifdef STATS
    max_dL = 0.0;
    max_dE = 0.0;
    ave_dL = 0.0;
    ave_dE = 0.0;

    pCmap = virt_cmap;
    for (i = 0; i < num_virt_cmap_entries; i++, pCmap++) {
	double t, dL, dU, dV, dE;
	if (pCmap->nextidx < 0) {
	    int ix = pCmap->bestidx;
	    dL = pCmap->L - Ltab[ix]; dL *= dL;
	    dU = pCmap->U - Utab[ix]; dU *= dU;
	    dV = pCmap->V - Vtab[ix]; dV *= dV;
	    dE = dL * Lscale + dU + dV;
	    dE = WEIGHT_DIST(dE, pCmap->L);
	} else {
	    dL = pCmap->dL;
	    dE = pCmap->dE;
	}

	if (dL > max_dL) max_dL = dL;
	t = UNWEIGHT_DIST(dE,dL) - dL*(Lscale-1);
	if (t > max_dE) max_dE = t;

	ave_dL += (dL > 0) ? sqrt(dL) : 0.0;
	ave_dE += (t > 0) ? sqrt(t) : 0.0;
    }

    jio_fprintf(stderr, "colors=%d, tablesize=%d, cubesize=%d, ",
	    cmapsize, tablesize, lookupsize);
    jio_fprintf(stderr, "Lscale=%5.3f, Weight=%5.3f mac=%s\n",
	    (double)lscale, (double)weight, doMac ? "true" : "false");
    jio_fprintf(stderr, "Worst case error dL = %5.3f, dE = %5.3f\n", 
	    sqrt(max_dL), sqrt(max_dE));
    jio_fprintf(stderr, "Average error dL = %5.3f, dE = %5.3f\n", 
	    ave_dL / num_virt_cmap_entries,  ave_dE / num_virt_cmap_entries);
#endif /* STATS */
#ifdef TIMES
    jio_fprintf(stderr, "%f seconds to find colors\n",
	    (double)(mid - start) / CLOCKS_PER_SEC);
    jio_fprintf(stderr, "%f seconds to finish nearest colors\n",
	    (double)(tbl - mid) / CLOCKS_PER_SEC);
    jio_fprintf(stderr, "%f seconds to make lookup table\n",
	    (double)(end - tbl) / CLOCKS_PER_SEC);
    jio_fprintf(stderr, "%f seconds total\n",
	    (double)(end - start) / CLOCKS_PER_SEC);
#endif /* TIMES */

    free(virt_cmap);
    virt_cmap = 0;
}