mirror of
https://github.com/scratchfoundation/bgfx.git
synced 2024-11-25 00:58:30 -05:00
Fine tuning imguiScrollArea sizes.
This commit is contained in:
parent
20f09a01a9
commit
a7cc06499b
1 changed files with 52 additions and 47 deletions
|
@ -57,7 +57,7 @@ static const int32_t DEFAULT_SPACING = 4;
|
||||||
static const int32_t TEXT_HEIGHT = 8;
|
static const int32_t TEXT_HEIGHT = 8;
|
||||||
static const int32_t SCROLL_AREA_PADDING = 6;
|
static const int32_t SCROLL_AREA_PADDING = 6;
|
||||||
static const int32_t INDENT_SIZE = 16;
|
static const int32_t INDENT_SIZE = 16;
|
||||||
static const int32_t AREA_HEADER = 28;
|
static const int32_t AREA_HEADER = 20;
|
||||||
static const int32_t COLOR_WHEEL_PADDING = 60;
|
static const int32_t COLOR_WHEEL_PADDING = 60;
|
||||||
static const float s_tabStops[4] = {150, 210, 270, 330};
|
static const float s_tabStops[4] = {150, 210, 270, 330};
|
||||||
|
|
||||||
|
@ -283,15 +283,13 @@ struct Imgui
|
||||||
, m_enabledAreaIds(0)
|
, m_enabledAreaIds(0)
|
||||||
, m_scissor(UINT16_MAX)
|
, m_scissor(UINT16_MAX)
|
||||||
, m_scrollTop(0)
|
, m_scrollTop(0)
|
||||||
, m_scrollBottom(0)
|
, m_scrollHeight(0)
|
||||||
, m_scrollRight(0)
|
, m_scrollRight(0)
|
||||||
, m_scrollAreaTop(0)
|
, m_scrollAreaTop(0)
|
||||||
, m_scrollAreaWidth(0)
|
, m_scrollAreaWidth(0)
|
||||||
, m_scrollAreaInnerWidth(0)
|
, m_scrollAreaInnerWidth(0)
|
||||||
, m_scrollAreaX(0)
|
, m_scrollAreaX(0)
|
||||||
, m_scrollVal(NULL)
|
, m_scrollVal(NULL)
|
||||||
, m_focusTop(0)
|
|
||||||
, m_focusBottom(0)
|
|
||||||
, m_scrollId(0)
|
, m_scrollId(0)
|
||||||
, m_insideScrollArea(false)
|
, m_insideScrollArea(false)
|
||||||
, m_textureWidth(512)
|
, m_textureWidth(512)
|
||||||
|
@ -683,54 +681,63 @@ struct Imgui
|
||||||
setEnabled(m_areaId);
|
setEnabled(m_areaId);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_widgetX = _x + SCROLL_AREA_PADDING;
|
drawRoundedRect( (float)_x
|
||||||
m_widgetY = _y + AREA_HEADER + (*_scroll);
|
, (float)_y
|
||||||
|
, (float)_width
|
||||||
|
, (float)_height
|
||||||
|
, 6
|
||||||
|
, imguiRGBA(0, 0, 0, 192)
|
||||||
|
);
|
||||||
|
|
||||||
|
const bool hasTitle = (NULL != _name && '\0' != _name[0]);
|
||||||
|
|
||||||
|
int32_t header = 0;
|
||||||
|
if (hasTitle)
|
||||||
|
{
|
||||||
|
drawText(_x + 10
|
||||||
|
, _y + 18
|
||||||
|
, ImguiTextAlign::Left
|
||||||
|
, _name
|
||||||
|
, imguiRGBA(255, 255, 255, 128)
|
||||||
|
);
|
||||||
|
header = AREA_HEADER;
|
||||||
|
}
|
||||||
|
|
||||||
|
const int32_t contentX = _x + SCROLL_AREA_PADDING;
|
||||||
|
const int32_t contentY = _y + SCROLL_AREA_PADDING + header - 1;
|
||||||
|
const int32_t contentWidth = _width - SCROLL_AREA_PADDING * 3;
|
||||||
|
const int32_t contentHeight = _height - 2*SCROLL_AREA_PADDING - header + 1;
|
||||||
|
|
||||||
|
nvgScissor(m_nvg
|
||||||
|
, float(contentX)
|
||||||
|
, float(contentY)
|
||||||
|
, float(contentWidth)
|
||||||
|
, float(contentHeight)
|
||||||
|
);
|
||||||
|
|
||||||
|
m_scissor = bgfx::setScissor(uint16_t(contentX)
|
||||||
|
, uint16_t(contentY)
|
||||||
|
, uint16_t(contentWidth)
|
||||||
|
, uint16_t(contentHeight)
|
||||||
|
);
|
||||||
|
|
||||||
|
m_widgetX = contentX;
|
||||||
|
m_widgetY = contentY + (*_scroll);
|
||||||
m_widgetW = _width - SCROLL_AREA_PADDING * 4 - 2;
|
m_widgetW = _width - SCROLL_AREA_PADDING * 4 - 2;
|
||||||
|
|
||||||
m_scrollTop = _y + AREA_HEADER;
|
m_scrollTop = contentY;
|
||||||
m_scrollBottom = _y + _height;
|
m_scrollHeight = contentHeight;
|
||||||
m_scrollRight = _x + _width - SCROLL_AREA_PADDING * 3;
|
m_scrollRight = _x + _width - SCROLL_AREA_PADDING * 3;
|
||||||
|
|
||||||
m_scrollVal = _scroll;
|
m_scrollVal = _scroll;
|
||||||
m_scrollAreaX = _x;
|
m_scrollAreaX = _x;
|
||||||
m_scrollAreaWidth = _width;
|
m_scrollAreaWidth = _width;
|
||||||
m_scrollAreaInnerWidth = m_widgetW;
|
m_scrollAreaInnerWidth = m_widgetW;
|
||||||
m_scrollAreaTop = m_widgetY;
|
m_scrollAreaTop = m_widgetY;
|
||||||
|
|
||||||
m_focusTop = _y - AREA_HEADER;
|
|
||||||
m_focusBottom = _y - AREA_HEADER + _height;
|
|
||||||
|
|
||||||
m_insideScrollArea = inRect(_x, _y, _width, _height, false);
|
m_insideScrollArea = inRect(_x, _y, _width, _height, false);
|
||||||
m_insideCurrentScroll = m_insideScrollArea;
|
m_insideCurrentScroll = m_insideScrollArea;
|
||||||
|
|
||||||
drawRoundedRect( (float)_x
|
|
||||||
, (float)_y
|
|
||||||
, (float)_width
|
|
||||||
, (float)_height
|
|
||||||
, 6
|
|
||||||
, imguiRGBA(0, 0, 0, 192)
|
|
||||||
);
|
|
||||||
|
|
||||||
drawText(_x + AREA_HEADER / 2
|
|
||||||
, _y + AREA_HEADER / 2
|
|
||||||
, ImguiTextAlign::Left
|
|
||||||
, _name
|
|
||||||
, imguiRGBA(255, 255, 255, 128)
|
|
||||||
);
|
|
||||||
|
|
||||||
nvgScissor(m_nvg
|
|
||||||
, float(_x + SCROLL_AREA_PADDING)
|
|
||||||
, float(_y + AREA_HEADER - 1)
|
|
||||||
, float(_width - SCROLL_AREA_PADDING * 3)
|
|
||||||
, float(_height - AREA_HEADER - SCROLL_AREA_PADDING)
|
|
||||||
);
|
|
||||||
|
|
||||||
m_scissor = bgfx::setScissor(uint16_t(_x + SCROLL_AREA_PADDING)
|
|
||||||
, uint16_t(_y + AREA_HEADER - 1)
|
|
||||||
, uint16_t(_width - SCROLL_AREA_PADDING * 3)
|
|
||||||
, uint16_t(_height - AREA_HEADER - SCROLL_AREA_PADDING)
|
|
||||||
);
|
|
||||||
|
|
||||||
return m_insideScrollArea;
|
return m_insideScrollArea;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -744,10 +751,10 @@ struct Imgui
|
||||||
int32_t xx = m_scrollRight + SCROLL_AREA_PADDING / 2;
|
int32_t xx = m_scrollRight + SCROLL_AREA_PADDING / 2;
|
||||||
int32_t yy = m_scrollTop;
|
int32_t yy = m_scrollTop;
|
||||||
int32_t width = SCROLL_AREA_PADDING * 2;
|
int32_t width = SCROLL_AREA_PADDING * 2;
|
||||||
int32_t height = m_scrollBottom - m_scrollTop;
|
int32_t height = m_scrollHeight;
|
||||||
|
|
||||||
int32_t stop = m_scrollAreaTop;
|
int32_t stop = m_scrollAreaTop;
|
||||||
int32_t sbot = m_widgetY + SCROLL_AREA_PADDING;
|
int32_t sbot = m_widgetY - DEFAULT_SPACING;
|
||||||
int32_t sh = sbot - stop; // The scrollable area height.
|
int32_t sh = sbot - stop; // The scrollable area height.
|
||||||
|
|
||||||
float barHeight = (float)height / (float)sh;
|
float barHeight = (float)height / (float)sh;
|
||||||
|
@ -1078,7 +1085,7 @@ struct Imgui
|
||||||
uint8_t selected = _selected;
|
uint8_t selected = _selected;
|
||||||
const int32_t tabWidth = m_widgetW / count;
|
const int32_t tabWidth = m_widgetW / count;
|
||||||
const int32_t tabWidthHalf = m_widgetW / (count*2);
|
const int32_t tabWidthHalf = m_widgetW / (count*2);
|
||||||
const int32_t textY = yy + height/2 + int32_t(m_fonts[m_currentFontIdx].m_size)/2 - 1;
|
const int32_t textY = yy + height/2 + int32_t(m_fonts[m_currentFontIdx].m_size)/2 - 2;
|
||||||
|
|
||||||
drawRoundedRect( (float)m_widgetX
|
drawRoundedRect( (float)m_widgetX
|
||||||
, (float)yy-1
|
, (float)yy-1
|
||||||
|
@ -2344,15 +2351,13 @@ struct Imgui
|
||||||
float m_circleVerts[NUM_CIRCLE_VERTS * 2];
|
float m_circleVerts[NUM_CIRCLE_VERTS * 2];
|
||||||
|
|
||||||
int32_t m_scrollTop;
|
int32_t m_scrollTop;
|
||||||
int32_t m_scrollBottom;
|
int32_t m_scrollHeight;
|
||||||
int32_t m_scrollRight;
|
int32_t m_scrollRight;
|
||||||
int32_t m_scrollAreaTop;
|
int32_t m_scrollAreaTop;
|
||||||
int32_t m_scrollAreaWidth;
|
int32_t m_scrollAreaWidth;
|
||||||
int32_t m_scrollAreaInnerWidth;
|
int32_t m_scrollAreaInnerWidth;
|
||||||
int32_t m_scrollAreaX;
|
int32_t m_scrollAreaX;
|
||||||
int32_t* m_scrollVal;
|
int32_t* m_scrollVal;
|
||||||
int32_t m_focusTop;
|
|
||||||
int32_t m_focusBottom;
|
|
||||||
uint16_t m_scrollId;
|
uint16_t m_scrollId;
|
||||||
bool m_insideScrollArea;
|
bool m_insideScrollArea;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue