Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2018-08-24 00:02:38 +0300
committerClément Foucault <foucault.clem@gmail.com>2018-08-24 00:02:45 +0300
commitcf64a83edc2621aaeafed417f22081ef7b81ad1b (patch)
tree88db048ea7425a55fbca24c426d03807fcdc074f /source/blender/editors/screen/screen_draw.c
parent19fe267823b8a0324318729dbc44afd37dc09bcf (diff)
UI: Fix area border thickness over top and bottom bar with glScissors
Diffstat (limited to 'source/blender/editors/screen/screen_draw.c')
-rw-r--r--source/blender/editors/screen/screen_draw.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/source/blender/editors/screen/screen_draw.c b/source/blender/editors/screen/screen_draw.c
index 60fe1dfa483..5371fcfd6d4 100644
--- a/source/blender/editors/screen/screen_draw.c
+++ b/source/blender/editors/screen/screen_draw.c
@@ -221,8 +221,8 @@ static void draw_join_shape(ScrArea *sa, char dir, unsigned int pos)
static void do_vert_pair(GPUVertBuf *vbo, uint pos, uint *vidx, int corner, int i)
{
float inter[2], exter[2];
- inter[0] = cosf((corner * 2.0f * M_PI / 4.0f) + (i * M_PI_2 / (CORNER_RESOLUTION - 1.0f)));
- inter[1] = sinf((corner * 2.0f * M_PI / 4.0f) + (i * M_PI_2 / (CORNER_RESOLUTION - 1.0f)));
+ inter[0] = cosf(corner * M_PI_2 + (i * M_PI_2 / (CORNER_RESOLUTION - 1.0f)));
+ inter[1] = sinf(corner * M_PI_2 + (i * M_PI_2 / (CORNER_RESOLUTION - 1.0f)));
/* Snap point to edge */
float div = 1.0f / max_ff(fabsf(inter[0]), fabsf(inter[1]));
@@ -377,6 +377,20 @@ void ED_screen_draw_edges(wmWindow *win)
ScrArea *sa;
+ rcti scissor_rect;
+ BLI_rcti_init_minmax(&scissor_rect);
+ for (sa = screen->areabase.first; sa; sa = sa->next) {
+ BLI_rcti_do_minmax_v(&scissor_rect, (int[2]){sa->v1->vec.x, sa->v1->vec.y});
+ BLI_rcti_do_minmax_v(&scissor_rect, (int[2]){sa->v3->vec.x, sa->v3->vec.y});
+ }
+
+ GPU_scissor(scissor_rect.xmin,
+ scissor_rect.ymin,
+ BLI_rcti_size_x(&scissor_rect) + 1,
+ BLI_rcti_size_y(&scissor_rect) + 1);
+
+ glEnable(GL_SCISSOR_TEST);
+
UI_GetThemeColor4fv(TH_EDITOR_OUTLINE, col);
col[3] = 1.0f / 8.0f;
corner_scale = U.pixelsize * 8.0f;
@@ -406,6 +420,8 @@ void ED_screen_draw_edges(wmWindow *win)
drawscredge_area(sa, winsize_x, winsize_y, edge_thickness);
}
+ glDisable(GL_SCISSOR_TEST);
+
screen->do_draw = false;
}