/* Draw Scene-Markers in time window */ void draw_markers_time(const bContext *C, int flag) { ListBase *markers = ED_context_get_markers(C); View2D *v2d; TimeMarker *marker; Scene *scene; if (markers == NULL) return; scene = CTX_data_scene(C); v2d = UI_view2d_fromcontext(C); /* unselected markers are drawn at the first time */ for (marker = markers->first; marker; marker = marker->next) { if ((marker->flag & SELECT) == 0) { draw_marker(v2d, marker, scene->r.cfra, flag); } } /* selected markers are drawn later */ for (marker = markers->first; marker; marker = marker->next) { if (marker->flag & SELECT) { draw_marker(v2d, marker, scene->r.cfra, flag); } } }
/* Draw Scene-Markers in time window */ void ED_markers_draw(const bContext *C, int flag) { ListBase *markers = ED_context_get_markers(C); View2D *v2d; TimeMarker *marker; Scene *scene; int select_pass; int v2d_clip_range_x[2]; float font_width_max; /* cache values */ float ypixels, xscale, yscale; if (markers == NULL || BLI_listbase_is_empty(markers)) { return; } scene = CTX_data_scene(C); v2d = UI_view2d_fromcontext(C); if (flag & DRAW_MARKERS_MARGIN) { const unsigned char shade[4] = {0, 0, 0, 16}; glColor4ubv(shade); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glRectf(v2d->cur.xmin, 0, v2d->cur.xmax, UI_MARKER_MARGIN_Y); glDisable(GL_BLEND); } /* no time correction for framelen! space is drawn with old values */ ypixels = BLI_rcti_size_y(&v2d->mask); UI_view2d_scale_get(v2d, &xscale, &yscale); glScalef(1.0f / xscale, 1.0f, 1.0f); /* x-bounds with offset for text (adjust for long string, avoid checking string width) */ font_width_max = (10 * UI_DPI_FAC) / xscale; v2d_clip_range_x[0] = v2d->cur.xmin - (sizeof(marker->name) * font_width_max); v2d_clip_range_x[1] = v2d->cur.xmax + font_width_max; /* loop [unselected, selected] */ for (select_pass = 0; select_pass <= SELECT; select_pass += SELECT) { /* unselected markers are drawn at the first time */ for (marker = markers->first; marker; marker = marker->next) { if ((marker->flag & SELECT) == select_pass) { /* bounds check */ if ((marker->frame >= v2d_clip_range_x[0]) && (marker->frame <= v2d_clip_range_x[1])) { draw_marker(v2d, marker, scene->r.cfra, flag, ypixels, xscale, yscale); } } } } glScalef(xscale, 1.0f, 1.0f); }
int Leveler::draw() { Stroke (255, 128, 128, 0.5); StrokeWidth (2); draw_l_title ( ); draw_horizontal_tics( ); draw_vertical_line ( ); draw_x_label ( ); draw_y_label ( ); draw_marker( ); }
int Leveler::draw() { if (!Visible) return 0; Stroke (255, 128, 128, 0.5); StrokeWidth (2); draw_l_title ( ); draw_horizontal_tics( ); draw_vertical_line ( ); draw_x_label ( ); draw_y_label ( ); draw_marker ( ); return 1; }
static void gtk_plot_canvas_ellipse_select(GtkPlotCanvas *canvas, GtkPlotCanvasChild *child, GtkAllocation area) { GdkGC *xor_gc = NULL; GdkGCValues values; gdk_gc_get_values(GTK_WIDGET(canvas)->style->fg_gc[0], &values); values.function = GDK_INVERT; values.foreground = GTK_WIDGET(canvas)->style->white; values.subwindow_mode = GDK_INCLUDE_INFERIORS; xor_gc = gdk_gc_new_with_values(GTK_WIDGET(canvas)->window, &values, GDK_GC_FOREGROUND | GDK_GC_FUNCTION | GDK_GC_SUBWINDOW); gdk_draw_rectangle (GTK_WIDGET(canvas)->window, xor_gc, FALSE, area.x, area.y, area.width, area.height); draw_marker(canvas, xor_gc, area.x, area.y); draw_marker(canvas, xor_gc, area.x, area.y + area.height); draw_marker(canvas, xor_gc, area.x + area.width, area.y); draw_marker(canvas, xor_gc, area.x + area.width, area.y + area.height); if(area.height > DEFAULT_MARKER_SIZE * 2){ draw_marker(canvas, xor_gc, area.x, area.y + area.height / 2); draw_marker(canvas, xor_gc, area.x + area.width, area.y + area.height / 2); } if(area.width > DEFAULT_MARKER_SIZE * 2){ draw_marker(canvas, xor_gc, area.x + area.width / 2, area.y); draw_marker(canvas, xor_gc, area.x + area.width / 2, area.y + area.height); } gdk_gc_set_line_attributes(xor_gc, 1, 1, 0, 0); gdk_draw_arc (GTK_WIDGET(canvas)->window, xor_gc, FALSE, roundint(area.x), roundint(area.y), roundint(area.width), roundint(area.height), 0, 25000); if(xor_gc) gdk_gc_unref(xor_gc); }
// ----- begin of function ScenarioEditro::disp_edit_view -------// // void ScenarioEditor::disp_edit_view() { if( power.command_id ) return; int drawMarker = 0; int validAction = 0; int markerX1, markerY1, markerX2, markerY2; if( mouse.in_area( ZOOM_X1, ZOOM_Y1, ZOOM_X2, ZOOM_Y2) ) { int xLoc, yLoc; char mobileType; if( world.zoom_matrix->get_detect_location( mouse.cur_x, mouse.cur_y, &xLoc, &yLoc, &mobileType) ) { if( unit_array.selected_recno && !unit_array.is_deleted(unit_array.selected_recno) ) { Unit *unitPtr = unit_array[unit_array.selected_recno]; if( world.check_unit_space( xLoc, yLoc, xLoc+unitPtr->sprite_info->loc_width-1, yLoc+unitPtr->sprite_info->loc_height-1, unitPtr->mobile_type) ) { validAction = 1; } markerX1 = xLoc; markerY1 = yLoc; markerX2 = xLoc + unitPtr->obj_loc_width() - 1; markerY2 = yLoc + unitPtr->obj_loc_height() - 1; drawMarker = 1; } } } // ------ draw marker -------// if( drawMarker ) { draw_marker( validAction, markerX1, markerY1, markerX2, markerY2 ); } }
static void marker_routine( int n, double *px, double *py, int mtype, double mscale, int mcolor) { double x, y; double *clrt = gkss->viewport[gkss->cntnr]; register int i, draw; for (i = 0; i < n; i++) { WC_to_NDC(px[i], py[i], gkss->cntnr, x, y); seg_xform(&x, &y); if (gkss->clip == GKS_K_CLIP) draw = (x >= clrt[0] && x <= clrt[1] && y >= clrt[2] && y <= clrt[3]); else draw = 1; if (draw) draw_marker(x, y, mtype, mscale, mcolor); } }
// ----- begin of function ScenarioEditor::disp_monster_view ------// // void ScenarioEditor::disp_monster_view() { if( power.command_id ) return; int drawMarker = 0; int validAction = 0; int markerX1, markerY1, markerX2, markerY2; int xLoc, yLoc; char mobileType; if( mouse.in_area(ZOOM_X1, ZOOM_Y1, ZOOM_X2, ZOOM_Y2) ) { // destruction marker if there is a human Location *locPtr = power.test_detect(mouse.cur_x, mouse.cur_y, &mobileType, &xLoc, &yLoc); if( locPtr && locPtr->base_obj_recno() ) { BaseObj *baseObj = base_obj_array[locPtr->base_obj_recno()]; drawMarker = 1; validAction = 1; markerX1 = baseObj->obj_loc_x1(); markerY1 = baseObj->obj_loc_y1(); markerX2 = baseObj->obj_loc_x2(); markerY2 = baseObj->obj_loc_y2(); } // construction marker else if( world.zoom_matrix->get_detect_location(mouse.cur_x, mouse.cur_y, &xLoc, &yLoc, NULL) ) { locPtr = world.get_loc( xLoc, yLoc ); if( unit_or_struct == 0 && !vbrowse_unit_id.none_record ) { // put unit monster_unit_id_array[monster_unit_id_browse_recno-1] // on (xLoc, yLoc) int unitId = monster_unit_id_array[monster_unit_id_browse_recno-1]; UnitInfo *unitInfo = unit_res[unitId]; SpriteInfo *spriteInfo = sprite_res[unitInfo->sprite_id]; if( world.check_unit_space(xLoc, yLoc, xLoc+spriteInfo->loc_width-1, yLoc+spriteInfo->loc_height-1, unitInfo->mobile_type) ) { validAction = 1; } markerX1 = xLoc; markerY1 = yLoc; markerX2 = xLoc + spriteInfo->loc_width -1; markerY2 = yLoc + spriteInfo->loc_height -1; drawMarker = markerX2 < MAX_WORLD_X_LOC && markerY2 < MAX_WORLD_Y_LOC; } else if( unit_or_struct == 1 && !vbrowse_firm_build.none_record ) { err_when( monster_firm_group_array[monster_firm_group_browse_recno-1] == 0 ); // put firm group monster_firm_group_array[monster_firm_group_browse_recno] // on (xLoc, yLoc) FirmGroup *firmGroup = firm_res.get_group(monster_firm_group_array[monster_firm_group_browse_recno-1]); if( world.can_build_firm( xLoc, yLoc, firmGroup->firm_id, 0) ) { validAction = 1; } markerX1 = xLoc; markerY1 = yLoc; markerX2 = xLoc + firm_res[firmGroup->firm_id]->loc_width - 1; markerY2 = yLoc + firm_res[firmGroup->firm_id]->loc_height - 1; drawMarker = markerX2 < MAX_WORLD_X_LOC && markerY2 < MAX_WORLD_Y_LOC; } } } // ------ draw marker -------// if( drawMarker ) { draw_marker( validAction, markerX1, markerY1, markerX2, markerY2 ); } }
// mouse proc for mouseTrack, handles the actual tracking messages from the // MAX command mode system int TrackMouseCallBack::proc(HWND hwnd, int msg, int point, int flag, IPoint2 m) { if (ref_deleted) { // bail if my tracking object is deleted under me end_track_mouse = TRUE; return FALSE; } int result = TRUE; ViewExp& vpx = MAXScript_interface->GetViewExp(hwnd); if ( ! vpx.IsAlive() ) { // why are we here DbgAssert(!_T("Invalid viewport!")); return FALSE; } int snap = (snap_mode == n_2D) ? SNAP_IN_PLANE : SNAP_IN_3D; IPoint2 sm; Value* cbmsg = NULL; // determine what kind of mouse event switch (msg) { case MOUSE_FREEMOVE: SetCursor(LoadCursor(g_hInst, MAKEINTRESOURCE(IDC_CROSS_HAIR))); cbmsg = n_freeMove; break; case MOUSE_MOVE: cbmsg = n_mouseMove; break; case MOUSE_POINT: if (!MAXScript_interface->IsCPEdgeOnInView()) cbmsg = n_mousePoint; break; case MOUSE_ABORT: case MOUSE_PROPCLICK: // right click exit cbmsg = n_mouseAbort; break; } if (cbmsg != NULL) { // we have an event to signal to the scripted callback Point3 wp; Point3 wdirp; BOOL ok = TRUE; // valid mouse op, compute tracking point & normal and invoke callback if (nodeTab.Count() > 0) { // point on object surface, get the normal ray ok = point_on_obj(vpx, m, r.p, r.dir); if (ok == TRUE) draw_marker(vpx, r.p, r.dir); } else { // point on active grid, compute normal ray vpx.SnapPreview(m, sm, NULL, snap); Point3 cpp = vpx.SnapPoint(m, sm, NULL, snap); Point3 dirp = cpp + Point3(0.0f, 0.0f, 1.0f); wp = vpx.MapCPToWorld(cpp); wdirp = vpx.MapCPToWorld(dirp); r.p = wp; r.dir = wdirp - wp; draw_marker(vpx, r.p, r.dir); } // call the scripted callback vl->ray_val = ok ? (Value*)new RayValue (r) : (Value*)&undefined; if (track_callback != NULL) result = do_track_callback(this, cbmsg, flag); } if (!result) end_track_mouse = TRUE; return result; }