/** * 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; }
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); }
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); }