void inventory_selector::insert_selection_column( const std::string &id, const std::string &name ) { std::unique_ptr<inventory_column> new_column( new selection_column( id, name ) ); for( const auto &column : columns ) { static_cast<selection_column *>( new_column.get() )->reserve_width_for( *column ); } if( column_can_fit( *new_column ) ) { // Insert only if it will be visible. Ignore otherwise. insert_column( columns.end(), new_column ); } }
int F4GB::find_or_append_column(packed_monomial m) { packed_monomial new_m; if (H.find_or_insert(m, new_m)) return static_cast<int>(new_m[-1]); // At this point, m is a new monomial to be placed as a column m = next_monom; B.intern(1+M->monomial_size(m)); next_monom = B.reserve(1+M->max_monomial_size()); next_monom++; return new_column(m); }
int F4GB::mult_monomials(packed_monomial m, packed_monomial n) { // We already have allocated space for a monomial // Do the multiply // Look it up in the hashtable // If it is there, return its column // If not, increment our memory block, and insert a new column. packed_monomial new_m; M->unchecked_mult(m,n,next_monom); if (H.find_or_insert(next_monom, new_m)) return static_cast<int>(new_m[-1]); // monom exists, don't save monomial space m = next_monom; B.intern(1+M->monomial_size(m)); next_monom = B.reserve(1+M->max_monomial_size()); next_monom++; return new_column(m); }
void graphics::hud_c::draw () { if (!nav::ship || !nav::ref || !nav::targ) return; column_w = graphics::camera->size[0] / columns; text_start_x= padding; text_start_y= graphics::camera->size[1] - 9 * 17; al_draw_filled_rectangle (0, text_start_y - padding, graphics::camera->size[0], graphics::camera->size[1], al_color_name("black")); al_draw_line (0, text_start_y - padding, graphics::camera->size[0], text_start_y - padding, al_color_name("white"), 1); std::stringstream text(""); text << std::setprecision(2) << std::uppercase << std::fixed; line = 0; column = 0; text << "Speed (" << nav::ref->name << "): " << calc::velocity(*nav::ship, *nav::ref).norm(); add_line(text); text << "Speed (" << nav::targ->name << "): " << calc::velocity(*nav::ship, *nav::targ).norm(); add_line(text); text << "Orbital Speed (" << nav::ref->name << "): " << calc::v_orbit(*nav::ship, *nav::ref); add_line(text); text << "Centrifugal Speed (" << nav::ref->name << "): " << calc::v_cen(*nav::ship, *nav::ref); add_line(text); text << "Tangential Speed (" << nav::ref->name << "): " << calc::v_tan(*nav::ship, *nav::ref); add_line(text); text << "Acceleration (" << nav::ship->name << "): " << nav::ship->acc.norm(); add_line(text); text << "Stopping Acceleration (" << nav::ref->name << "): " << calc::stopping_acc(*nav::ship, *nav::ref); add_line(text); text << "Periapsis (" << nav::ref->name << "): " << calc::periapsis(*nav::ship, *nav::ref); add_line(text); text << "Apoapsis (" << nav::ref->name << "): " << calc::apoapsis(*nav::ship, *nav::ref); add_line(text); new_column(); if (nav::ship->type == HAB) { hab_c *hab = (hab_c*) nav::ship; text << "Fuel (" << hab->name << "): " << hab->fuel; add_line(text); text << "Throttle (" << hab->name << "): " << hab->throttle * 100 << '%'; add_line(text); } add_line(text); add_line(text); add_line(text); add_line(text); add_line(text); add_line(text); graphics::draw_at(*nav::ship, 25/nav::ship->radius, graphics::camera->size[0]/2, text_start_y + padding + 56); text << "Turn rate (" << nav::ship->name << "): " << nav::ship->ang_v/M_PI*180 << " \u00B0/s"; add_line(text); new_column(); text << "Altitude (" << nav::ref->name << "): " << calc::distance(*nav::ship, *nav::ref) - (nav::ship->radius + nav::ref->radius); add_line(text); text << "Time Dilation: " << tidi << "x"; add_line(text); text << "\u03B8 (\u2220" << nav::ship->name<<'/'<<nav::ref->name<<'/'<<nav::targ->name<< "): " << calc::theta(*nav::ship, *nav::ref, *nav::targ); add_line(text); text << "Pitch (" << nav::ref->name << "): " << calc::pitch(*nav::ship, *nav::ref); add_line(text); text << "Center: " << graphics::camera->center->name; add_line(text); text << "Ship: " << nav::ship->name; add_line(text); text << "Target: " << nav::targ->name; add_line(text); text << "Reference: " << nav::ref->name; add_line(text); text << "Navigation: " << "Manual"; add_line(text); }
char * send_client(View *v, IxpMsg *m, Bool swap) { Area *to, *a; Frame *f; Client *c; char *s; ulong i; int sym; s = getword(m); c = strclient(v, s); if(c == nil) return Ebadvalue; f = view_clientframe(v, c); if(f == nil) return Ebadvalue; a = f->area; to = nil; s = getword(m); sym = getsym(s); switch(sym) { case LUP: case LDOWN: return send_frame(f, sym, swap); case LLEFT: if(a->floating) return Ebadvalue; if(a->prev != v->area) to = a->prev; a = v->area; break; case LRIGHT: if(a->floating) return Ebadvalue; to = a->next; break; case LTOGGLE: if(!a->floating) to = v->area; else if(c->revert && !c->revert->floating) to = c->revert; else to = v->area->next; break; default: if(!getulong(s, &i) || i == 0) return Ebadvalue; for(to=v->area; to; to=to->next) if(!i--) break; break; } if(!to && !swap && (f->anext || f != f->area->frame)) to = new_column(v, a, 0); if(!to) return Ebadvalue; if(!swap) send_to_area(to, f); else if(to->sel) swap_frames(f, to->sel); else return Ebadvalue; flushevents(EnterWindowMask, False); focus_frame(f, True); arrange_view(v); update_views(); return nil; }
/*gtk_tree_selection_set_select_function(viewsel, treeselfun,NULL,NULL); */ gtk_tree_selection_set_mode(viewsel,GTK_SELECTION_MULTIPLE); gtk_tree_view_set_tooltip_column(GTK_TREE_VIEW(view), COL_FULL); /* The implementation of GtkTreeView hardcoded GDK_LINE_ON_OFF_DASH in gtk_tree_view_set_grid_lines, which makes it impossible to make solid lines. In rc_string (monitor.c) "\255\256" in grid-line-pattern means 255 pixels of on and 1 pixel of off. I can not have \0 for the second part because it terminates the string. */ gtk_tree_view_set_grid_lines(GTK_TREE_VIEW(view), GTK_TREE_VIEW_GRID_LINES_VERTICAL); gtk_tree_view_set_enable_search(GTK_TREE_VIEW(view), TRUE); /*g_object_set(G_OBJECT(view),"rules-hint", TRUE, NULL); */ gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(view), TRUE); //gtk_tree_view_set_headers_clickable(GTK_TREE_VIEW(view), TRUE); gtk_tree_view_append_column(GTK_TREE_VIEW(view), new_column(0, 0, "Date", "text", COL_DATE, NULL)); gtk_tree_view_append_column(GTK_TREE_VIEW(view), new_column(0, 0, "PID" , "text", COL_PID, NULL)); gtk_tree_view_append_column(GTK_TREE_VIEW(view), new_column(0, -240,"Path", "text", COL_START, NULL)); gtk_tree_view_append_column(GTK_TREE_VIEW(view), new_column(0, 5,"Args", "text", COL_ARGS, NULL)); gtk_tree_view_append_column(GTK_TREE_VIEW(view), new_column(0, 0,"Out", "text", COL_OUT, NULL)); gtk_tree_view_append_column(GTK_TREE_VIEW(view), new_column(0, 0, "Low" , "text", COL_ERRLO,"foreground",COL_COLOR, NULL)); gtk_tree_view_append_column(GTK_TREE_VIEW(view), new_column(0, 0, "High", "text", COL_ERRHI,"foreground",COL_COLOR, NULL)); /*gtk_tree_view_append_column(GTK_TREE_VIEW(view), new_column(0, 0, "Step", "text", COL_TIMING, NULL)); gtk_tree_view_append_column(GTK_TREE_VIEW(view), new_column(0, 0, "Left", "text", COL_REST, NULL)); gtk_tree_view_append_column(GTK_TREE_VIEW(view), new_column(0, 0, "Tot", "text", COL_ALL, NULL));*/ gtk_tree_view_append_column(GTK_TREE_VIEW(view), new_column(1, 0, "Seed", "text", COL_SEED, "value",COL_SEEDP,NULL)); gtk_tree_view_append_column(GTK_TREE_VIEW(view), new_column(1, 0, "Progress", "text", COL_STEP, "value",COL_STEPP,NULL)); gtk_tree_view_append_column(GTK_TREE_VIEW(view), new_column(2, 0, " ", "pixbuf", COL_ACTION, NULL)); return view; }