Beispiel #1
0
/**
 * Creates a new, empty MetaFrameLayout. The fields will be set to dummy
 * values.
 *
 * \return The newly created MetaFrameLayout.
 */
MetaFrameLayout*
meta_frame_layout_new  (void)
{
  MetaFrameLayout *layout;

  layout = g_new0 (MetaFrameLayout, 1);

  layout->refcount = 1;

  /* Spacing as hardcoded in GTK+:
   * https://git.gnome.org/browse/gtk+/tree/gtk/gtkheaderbar.c?h=gtk-3-14#n53
   */
  layout->gtk.titlebar_spacing = 6;
  layout->gtk.icon_size = 16; /* was META_MINI_ICON_WIDTH from common.h */

  /* Fill with -1 values to detect invalid themes */
  layout->metacity.left_width = -1;
  layout->metacity.right_width = -1;
  layout->metacity.bottom_height = -1;

  init_border (&layout->metacity.title_border);

  layout->metacity.title_vertical_pad = -1;

  layout->metacity.right_titlebar_edge = -1;
  layout->metacity.left_titlebar_edge = -1;

  layout->metacity.button_sizing = META_BUTTON_SIZING_LAST;
  layout->metacity.button_aspect = 1.0;
  layout->metacity.button_width = -1;
  layout->metacity.button_height = -1;

  layout->invisible_resize_border.left = 10;
  layout->invisible_resize_border.right = 10;
  layout->invisible_resize_border.bottom = 10;
  layout->invisible_resize_border.top = 10;

  init_border (&layout->button_border);

  layout->has_title = TRUE;
  layout->title_scale = PANGO_SCALE_MEDIUM;

  return layout;
}
Beispiel #2
0
void init(struct node screen[80][21]) {
	
	int i,j,seed;

	seed = (int)time(NULL);

	//Write all cells to the "space" character
	for (i = 1; i < 79; i++) {
		for (j = 1; j < 20; j++) {
			srand(seed);
			screen[i][j].c = ' ';
			screen[i][j].hardness = rand() % 254 + 1;
			seed++;
		}
	}

	init_border(screen);
}
Beispiel #3
0
void YSlim::decimate(int target_num_vert) {

	init_border();

	pack_vertex();

	int t1 = clock();
	init_quadrics();
	select_pair();

	int id_v1, id_v2;
	double vx, vy, vz;

	vert_cnt_ = 0;
	for(int i=0; i<vertices.size(); ++i) {
		if(find(i) == i) vert_cnt_++;
	}
	
	while(vert_cnt_ > target_num_vert) {
		//assert(!errors.empty());

		//assert(false);

		if(errors.empty()) break;

		Error nd = errors.top();
		errors.pop();
		if(is_merged(nd.u_, nd.v_)) continue;

		if(nd.error_ > Bound_Constraint * 3) continue;

		id_v1 = find(nd.u_);
		id_v2 = find(nd.v_);

		if(id_v1 >= vertices.size() || id_v2 >= vertices.size())continue;
		if(id_v1 != nd.u_ || id_v2 != nd.v_) continue;

		//merge the smaller set to the bigger set
		//make id_v1 the bigger one 
		if(adj[id_v1].size() < adj[id_v2].size())
			swap(id_v1, id_v2);

		//update quadric of v1
		quadrics[id_v1] = quadrics[id_v1] + quadrics[id_v2];


		//merge the errors of id_v2 to id_v1
		while(adj[id_v2].size() > 0) {
			int x = adj[id_v2].back();
			
			if(find(x) == x && x != id_v2)
				add_error(x, id_v1);

			adj[id_v2].pop_back();
		}

		//printf("merging %d %d\n", id_v1, id_v2);

		//merge the point of id_v2 to id_v1
		p_[id_v2] = p_[id_v1];

		//decrease the vertex count
		vert_cnt_--;
	}

	update_faces();

	int t2 = clock();
	decimate_time_ = t2 - t1;
	//Log::log("decimate: %d ms\n", t2 - t1);
}