mirror of https://github.com/buggins/dlangui.git
commit
3c5573aba0
|
@ -46,10 +46,8 @@ class GLDrawBuf : DrawBuf, GLConfigCallback {
|
|||
@property Scene scene() { return _scene; }
|
||||
|
||||
this(int dx, int dy, bool framebuffer = false) {
|
||||
_dx = dx;
|
||||
_dy = dy;
|
||||
resize(dx, dy);
|
||||
_framebuffer = framebuffer;
|
||||
resetClipping();
|
||||
}
|
||||
|
||||
/// returns current width
|
||||
|
@ -65,7 +63,6 @@ class GLDrawBuf : DrawBuf, GLConfigCallback {
|
|||
|
||||
/// reserved for hardware-accelerated drawing - begins drawing batch
|
||||
override void beforeDrawing() {
|
||||
resetClipping();
|
||||
_alpha = 0;
|
||||
if (_scene !is null) {
|
||||
_scene.reset();
|
||||
|
|
|
@ -422,12 +422,13 @@ class SDLWindow : Window {
|
|||
float b = ((_backgroundColor >> 0) & 255) / 255.0f;
|
||||
glClearColor(r, g, b, a);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
GLDrawBuf buf = new GLDrawBuf(_dx, _dy, false);
|
||||
buf.beforeDrawing();
|
||||
onDraw(buf);
|
||||
buf.afterDrawing();
|
||||
if (!_drawbuf)
|
||||
_drawbuf = new GLDrawBuf(_dx, _dy);
|
||||
_drawbuf.resize(_dx, _dy);
|
||||
_drawbuf.beforeDrawing();
|
||||
onDraw(_drawbuf);
|
||||
_drawbuf.afterDrawing();
|
||||
SDL_GL_SwapWindow(_win);
|
||||
destroy(buf);
|
||||
}
|
||||
} else {
|
||||
// Select the color for drawing.
|
||||
|
@ -441,10 +442,9 @@ class SDLWindow : Window {
|
|||
if (!_drawbuf)
|
||||
_drawbuf = new ColorDrawBuf(_dx, _dy);
|
||||
_drawbuf.resize(_dx, _dy);
|
||||
_drawbuf.resetClipping();
|
||||
_drawbuf.fill(_backgroundColor);
|
||||
onDraw(_drawbuf);
|
||||
draw(_drawbuf);
|
||||
draw(cast(ColorDrawBuf)_drawbuf);
|
||||
|
||||
// Up until now everything was drawn behind the scenes.
|
||||
// This will show the new, red contents of the window.
|
||||
|
@ -452,7 +452,7 @@ class SDLWindow : Window {
|
|||
}
|
||||
}
|
||||
|
||||
ColorDrawBuf _drawbuf;
|
||||
DrawBuf _drawbuf;
|
||||
|
||||
//bool _exposeSent;
|
||||
void processExpose() {
|
||||
|
|
|
@ -960,12 +960,10 @@ class EditWidgetBase : ScrollWidgetBase, EditableContentListener, MenuItemAction
|
|||
// draw caret
|
||||
Rect caretRc = caretRect();
|
||||
if (caretRc.intersects(_clientRect)) {
|
||||
Rect rc1 = caretRc;
|
||||
rc1.right = rc1.left + 1;
|
||||
caretRc.left++;
|
||||
if (_replaceMode)
|
||||
buf.fillRect(caretRc, _caretColorReplace);
|
||||
buf.fillRect(rc1, _caretColor);
|
||||
buf.drawLine(Point(caretRc.left, caretRc.bottom), Point(caretRc.left, caretRc.top), _caretColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1407,11 +1407,6 @@ class StringGridWidget : StringGridWidgetBase {
|
|||
|
||||
/// draw cell background
|
||||
protected override void drawHeaderCellBackground(DrawBuf buf, Rect rc, int c, int r) {
|
||||
Rect vborder = rc;
|
||||
Rect hborder = rc;
|
||||
vborder.left = vborder.right - 1;
|
||||
hborder.top = hborder.bottom - 1;
|
||||
hborder.right--;
|
||||
bool selectedCol = (c == col) && !_rowSelect;
|
||||
bool selectedRow = r == row;
|
||||
bool selectedCell = selectedCol && selectedRow;
|
||||
|
@ -1426,8 +1421,30 @@ class StringGridWidget : StringGridWidgetBase {
|
|||
cl = _cellHeaderSelectedBackgroundColor;
|
||||
}
|
||||
buf.fillRect(rc, cl);
|
||||
buf.fillRect(vborder, _cellHeaderBorderColor);
|
||||
buf.fillRect(hborder, _cellHeaderBorderColor);
|
||||
buf.drawLine(Point(rc.right, rc.bottom), Point(rc.right, rc.top), _cellHeaderBorderColor); // vertical
|
||||
buf.drawLine(Point(rc.left, rc.bottom), Point(rc.right - 1, rc.bottom), _cellHeaderBorderColor); // horizontal
|
||||
}
|
||||
|
||||
/// draw cell background
|
||||
protected override void drawCellBackground(DrawBuf buf, Rect rc, int c, int r) {
|
||||
bool selectedCol = c == col;
|
||||
bool selectedRow = r == row;
|
||||
bool selectedCell = selectedCol && selectedRow;
|
||||
if (_rowSelect && selectedRow)
|
||||
selectedCell = true;
|
||||
// normal cell background
|
||||
if (c < fixedCols || r < fixedRows) {
|
||||
// fixed cell background
|
||||
buf.fillRect(rc, _fixedCellBackgroundColor);
|
||||
}
|
||||
buf.drawLine(Point(rc.left, rc.bottom + 1), Point(rc.left, rc.top), _cellBorderColor); // vertical
|
||||
buf.drawLine(Point(rc.left, rc.bottom), Point(rc.right - 1, rc.bottom), _cellBorderColor); // horizontal
|
||||
if (selectedCell) {
|
||||
if (_rowSelect)
|
||||
buf.drawFrame(rc, _selectionColorRowSelect, Rect(0,1,0,1), _cellBorderColor);
|
||||
else
|
||||
buf.drawFrame(rc, _selectionColor, Rect(1,1,1,1), _cellBorderColor);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -1442,34 +1459,6 @@ class StringGridWidget : StringGridWidgetBase {
|
|||
_cellHeaderSelectedBackgroundColor = style.customColor("grid_cell_background_header_selected", 0x80FFC040);
|
||||
super.onThemeChanged();
|
||||
}
|
||||
|
||||
/// draw cell background
|
||||
protected override void drawCellBackground(DrawBuf buf, Rect rc, int c, int r) {
|
||||
Rect vborder = rc;
|
||||
Rect hborder = rc;
|
||||
vborder.left = vborder.right - 1;
|
||||
hborder.top = hborder.bottom - 1;
|
||||
hborder.right--;
|
||||
bool selectedCol = c == col;
|
||||
bool selectedRow = r == row;
|
||||
bool selectedCell = selectedCol && selectedRow;
|
||||
if (_rowSelect && selectedRow)
|
||||
selectedCell = true;
|
||||
// normal cell background
|
||||
if (c < fixedCols || r < fixedRows) {
|
||||
// fixed cell background
|
||||
buf.fillRect(rc, _fixedCellBackgroundColor);
|
||||
}
|
||||
buf.fillRect(vborder, _cellBorderColor);
|
||||
buf.fillRect(hborder, _cellBorderColor);
|
||||
if (selectedCell) {
|
||||
if (_rowSelect)
|
||||
buf.drawFrame(rc, _selectionColorRowSelect, Rect(0,1,0,1), _cellBorderColor);
|
||||
else
|
||||
buf.drawFrame(rc, _selectionColor, Rect(1,1,1,1), _cellBorderColor);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
import dlangui.widgets.metadata;
|
||||
|
|
Loading…
Reference in New Issue