[Bf-blender-cvs] [708f375f767] soc-2021-uv-editor-improvements: Cleanup: Refactor reusable code into functions
Siddhartha Jejurkar
noreply at git.blender.org
Sun Jul 4 17:03:32 CEST 2021
Commit: 708f375f767f25ed2a0ada54b652d2c776e415ea
Author: Siddhartha Jejurkar
Date: Sun Jul 4 20:19:58 2021 +0530
Branches: soc-2021-uv-editor-improvements
https://developer.blender.org/rB708f375f767f25ed2a0ada54b652d2c776e415ea
Cleanup: Refactor reusable code into functions
New functions for :
* Calculating current zoom factor used for determining the grid
resolution in UV/Image editor
* Calculating grid steps for determining the grid spacings in UV/Image
editor
===================================================================
M source/blender/draw/engines/overlay/overlay_grid.c
M source/blender/editors/include/ED_image.h
M source/blender/editors/space_image/image_draw.c
===================================================================
diff --git a/source/blender/draw/engines/overlay/overlay_grid.c b/source/blender/draw/engines/overlay/overlay_grid.c
index ca4065c72ad..3077ddd4ee3 100644
--- a/source/blender/draw/engines/overlay/overlay_grid.c
+++ b/source/blender/draw/engines/overlay/overlay_grid.c
@@ -70,29 +70,18 @@ void OVERLAY_grid_init(OVERLAY_Data *vedata)
copy_v3_fl3(
shd->grid_size, (float)sima->tile_grid_shape[0], (float)sima->tile_grid_shape[1], 1.0f);
- /* For a NxN grid */
+ /* For a NxN grid. Keep insync with value in initSnapSpatial() inside transform.c */
int N = 4;
- float xzoom = (v2d->cur.xmax - v2d->cur.xmin) / ((float)(v2d->mask.xmax - v2d->mask.xmin));
- float yzoom = (v2d->cur.ymax - v2d->cur.ymin) / ((float)(v2d->mask.ymax - v2d->mask.ymin));
- /* Calculating average of xzoom and yzoom for accuracy. Using only xzoom or yzoom would have
- * been sufficient */
- shd->zoom_factor = (xzoom + yzoom) / 2.0f;
- /* grid begins to appear when the length of one grid unit is at least
- * (N^2) pixels in the UV/Image editor */
- shd->zoom_factor *= (N * N);
+ shd->zoom_factor = ED_space_image_zoom_level(v2d, N);
if (sima->flag & SI_DYNAMIC_GRID) {
shd->grid_flag |= DYNAMIC_GRID;
- for (int step = 0; step < 8; step++) {
- /* Temporary fix : dynamic_grid_size is not using the default value (=1) assignd in RNA */
- sima->dynamic_grid_size = (sima->dynamic_grid_size == 0) ? 1 : sima->dynamic_grid_size;
- shd->grid_steps[step] = powf(1, step) * (1.0f / ((float)sima->dynamic_grid_size));
- }
+ /* Temporary fix : dynamic_grid_size is not using the default value (=1) assignd in RNA */
+ sima->dynamic_grid_size = (sima->dynamic_grid_size == 0) ? 1 : sima->dynamic_grid_size;
+ ED_space_image_grid_steps(sima->dynamic_grid_size, shd->grid_steps, true);
}
else {
- for (int step = 0; step < 8; step++) {
- shd->grid_steps[step] = powf(N, step) * (1.0f / (powf(N, 8)));
- }
+ ED_space_image_grid_steps(N, shd->grid_steps, false);
}
return;
}
diff --git a/source/blender/editors/include/ED_image.h b/source/blender/editors/include/ED_image.h
index ec525806b81..aa923bcf245 100644
--- a/source/blender/editors/include/ED_image.h
+++ b/source/blender/editors/include/ED_image.h
@@ -41,6 +41,13 @@ struct SpaceImage;
struct bContext;
struct wmOperator;
struct wmWindowManager;
+struct View2D;
+
+/* image_draw.c */
+float ED_space_image_zoom_level(const struct View2D *v2d, const int grid_dimension);
+void ED_space_image_grid_steps(const int grid_dimension,
+ float grid_steps[8],
+ const bool is_dynamic_grid);
/* image_edit.c, exported for transform */
struct Image *ED_space_image(struct SpaceImage *sima);
diff --git a/source/blender/editors/space_image/image_draw.c b/source/blender/editors/space_image/image_draw.c
index dc693b25107..5b5ec236890 100644
--- a/source/blender/editors/space_image/image_draw.c
+++ b/source/blender/editors/space_image/image_draw.c
@@ -34,6 +34,7 @@
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
#include "DNA_space_types.h"
+#include "DNA_view2d_types.h"
#include "PIL_time.h"
@@ -1049,3 +1050,32 @@ void draw_image_cache(const bContext *C, ARegion *region)
ED_mask_draw_frames(mask, region, cfra, sfra, efra);
}
}
+
+float ED_space_image_zoom_level(const View2D *v2d, const int grid_dimension)
+{
+ float xzoom = (v2d->cur.xmax - v2d->cur.xmin) / ((float)(v2d->mask.xmax - v2d->mask.xmin));
+ float yzoom = (v2d->cur.ymax - v2d->cur.ymin) / ((float)(v2d->mask.ymax - v2d->mask.ymin));
+ /* Calculating average of xzoom and yzoom for accuracy. Using only xzoom or yzoom would have
+ * been sufficient */
+ float zoom_factor = (xzoom + yzoom) / 2.0f;
+ /* grid begins to appear when the length of one grid unit is at least (N^2) pixels in the
+ * UV/Image editor for a (NxN grid) */
+ zoom_factor *= (grid_dimension * grid_dimension);
+ return zoom_factor;
+}
+
+void ED_space_image_grid_steps(const int grid_dimension,
+ float grid_steps[8],
+ const bool is_dynamic_grid)
+{
+ if (is_dynamic_grid) {
+ for (int step = 0; step < 8; step++) {
+ grid_steps[step] = powf(1, step) * (1.0f / ((float)grid_dimension));
+ }
+ }
+ else {
+ for (int step = 0; step < 8; step++) {
+ grid_steps[step] = powf(grid_dimension, step) * (1.0f / (powf(grid_dimension, 8)));
+ }
+ }
+}
\ No newline at end of file
More information about the Bf-blender-cvs
mailing list