UI: View2D: Align vertical indicators to view
In editors with vertical scale indicators, such as Graph Editor,
Drivers, or VSE, display the values aligned to the view.
Also add a shadow (similar to the 3D View info) to improve readability when the text is on top of curves, strips, or other content.
{F10987240, size=full}
Reviewed By: Severin
Differential Revision: https://developer.blender.org/D12809
			
			
This commit is contained in:
		 Submodule release/datafiles/locale updated: 4833954c0a...75e46177f3
									
								
							 Submodule release/scripts/addons updated: 67f1fbca14...f10ca8c156
									
								
							 Submodule release/scripts/addons_contrib updated: 5a82baad9f...42da56aa73
									
								
							@@ -394,29 +394,33 @@ static void draw_vertical_scale_indicators(const ARegion *region,
 | 
			
		||||
  const int font_id = BLF_default();
 | 
			
		||||
  UI_FontThemeColor(font_id, colorid);
 | 
			
		||||
 | 
			
		||||
  BLF_enable(font_id, BLF_ROTATION);
 | 
			
		||||
  BLF_rotation(font_id, M_PI_2);
 | 
			
		||||
 | 
			
		||||
  BLF_batch_draw_begin();
 | 
			
		||||
 | 
			
		||||
  const float xpos = rect->xmax - 2.0f * UI_DPI_FAC;
 | 
			
		||||
  BLF_enable(font_id, BLF_SHADOW);
 | 
			
		||||
  const float shadow_color[4] = {0.0f, 0.0f, 0.0f, 1.0f};
 | 
			
		||||
  BLF_shadow(font_id, 5, shadow_color);
 | 
			
		||||
  BLF_shadow_offset(font_id, 1, -1);
 | 
			
		||||
 | 
			
		||||
  const float x_offset = 8.0f;
 | 
			
		||||
  const float xpos = (rect->xmin + x_offset) * UI_DPI_FAC;
 | 
			
		||||
  const float ymin = rect->ymin;
 | 
			
		||||
  const float ymax = rect->ymax;
 | 
			
		||||
  const float y_offset = (BLF_height_max(font_id) / 2.0f) - U.pixelsize;
 | 
			
		||||
 | 
			
		||||
  for (uint i = 0; i < steps; i++) {
 | 
			
		||||
    const float ypos_view = start + i * distance;
 | 
			
		||||
    const float ypos_region = UI_view2d_view_to_region_y(v2d, ypos_view + display_offset);
 | 
			
		||||
    char text[32];
 | 
			
		||||
    to_string(to_string_data, ypos_view, distance, sizeof(text), text);
 | 
			
		||||
    const float text_width = BLF_width(font_id, text, strlen(text));
 | 
			
		||||
 | 
			
		||||
    if (ypos_region - text_width / 2.0f >= ymin && ypos_region + text_width / 2.0f <= ymax) {
 | 
			
		||||
      BLF_draw_default(xpos, ypos_region - text_width / 2.0f, 0.0f, text, sizeof(text));
 | 
			
		||||
    if (ypos_region - y_offset >= ymin && ypos_region + y_offset <= ymax) {
 | 
			
		||||
      BLF_draw_default(xpos, ypos_region - y_offset, 0.0f, text, sizeof(text));
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  BLF_disable(font_id, BLF_SHADOW);
 | 
			
		||||
 | 
			
		||||
  BLF_batch_draw_end();
 | 
			
		||||
  BLF_disable(font_id, BLF_ROTATION);
 | 
			
		||||
 | 
			
		||||
  GPU_matrix_pop_projection();
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
 Submodule source/tools updated: 01f51a0e55...5061594ee6
									
								
							
		Reference in New Issue
	
	Block a user