mirror of https://github.com/buggins/dlangui.git
SDL support: UI image is drawn ok
This commit is contained in:
parent
988abfe449
commit
8ce36c6eed
|
@ -91,11 +91,6 @@ version(USE_SDL) {
|
||||||
SDL_SetWindowTitle(_win, _caption.toStringz);
|
SDL_SetWindowTitle(_win, _caption.toStringz);
|
||||||
}
|
}
|
||||||
|
|
||||||
void handleResize(int w, int h) {
|
|
||||||
_dx = w;
|
|
||||||
_dy = h;
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_Texture * _texture;
|
SDL_Texture * _texture;
|
||||||
int _txw;
|
int _txw;
|
||||||
int _txh;
|
int _txh;
|
||||||
|
@ -114,44 +109,48 @@ version(USE_SDL) {
|
||||||
_txh = _dy;
|
_txh = _dy;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void draw(ColorDrawBuf buf) {
|
private void draw(ColorDrawBuf buf) {
|
||||||
updateBufferSize();
|
updateBufferSize();
|
||||||
SDL_Rect rect;
|
SDL_Rect rect;
|
||||||
rect.x = 0;
|
rect.w = buf.width;
|
||||||
rect.y = 0;
|
rect.h = buf.height;
|
||||||
rect.w = _dx;
|
|
||||||
rect.h = _dy;
|
|
||||||
uint * pixels = buf.scanLine(0);
|
|
||||||
SDL_UpdateTexture(_texture,
|
SDL_UpdateTexture(_texture,
|
||||||
&rect,
|
&rect,
|
||||||
cast(const void*)pixels,
|
cast(const void*)buf.scanLine(0),
|
||||||
_dx * uint.sizeof);
|
buf.width * uint.sizeof);
|
||||||
SDL_RenderCopy(_renderer, _texture, &rect, &rect);
|
SDL_RenderCopy(_renderer, _texture, &rect, &rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
void redraw() {
|
void redraw() {
|
||||||
|
// check if size has been changed
|
||||||
// Select the color for drawing. It is set to red here.
|
int w, h;
|
||||||
SDL_SetRenderDrawColor(_renderer, 255, 0, 0, 255);
|
SDL_GetWindowSize(_win,
|
||||||
|
&w,
|
||||||
// Clear the entire screen to our selected color.
|
&h);
|
||||||
SDL_RenderClear(_renderer);
|
onResize(w, h);
|
||||||
|
|
||||||
|
|
||||||
if (_enableOpengl) {
|
if (_enableOpengl) {
|
||||||
version(USE_OPENGL) {
|
version(USE_OPENGL) {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// Select the color for drawing. It is set to red here.
|
||||||
|
//SDL_SetRenderDrawColor(_renderer, 255, 0, 0, 255);
|
||||||
|
// Clear the entire screen to our selected color.
|
||||||
|
//SDL_RenderClear(_renderer);
|
||||||
|
|
||||||
if (!_drawbuf)
|
if (!_drawbuf)
|
||||||
_drawbuf = new ColorDrawBuf(_dx, _dy);
|
_drawbuf = new ColorDrawBuf(_dx, _dy);
|
||||||
_drawbuf.resize(_dx, _dy);
|
_drawbuf.resize(_dx, _dy);
|
||||||
_drawbuf.fill(_backgroundColor);
|
_drawbuf.fill(_backgroundColor);
|
||||||
onDraw(_drawbuf);
|
onDraw(_drawbuf);
|
||||||
draw(_drawbuf);
|
draw(_drawbuf);
|
||||||
|
|
||||||
|
// Up until now everything was drawn behind the scenes.
|
||||||
|
// This will show the new, red contents of the window.
|
||||||
|
SDL_RenderPresent(_renderer);
|
||||||
}
|
}
|
||||||
// Up until now everything was drawn behind the scenes.
|
|
||||||
// This will show the new, red contents of the window.
|
|
||||||
SDL_RenderPresent(_renderer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ColorDrawBuf _drawbuf;
|
ColorDrawBuf _drawbuf;
|
||||||
|
@ -228,8 +227,8 @@ version(USE_SDL) {
|
||||||
bool connect() {
|
bool connect() {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
DerelictGL3.load();
|
//DerelictGL3.load();
|
||||||
_enableOpengl = true;
|
_enableOpengl = false;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.e("Cannot load opengl library", e);
|
Log.e("Cannot load opengl library", e);
|
||||||
}
|
}
|
||||||
|
@ -285,7 +284,12 @@ version(USE_SDL) {
|
||||||
switch (event.window.event) {
|
switch (event.window.event) {
|
||||||
case SDL_WINDOWEVENT_RESIZED:
|
case SDL_WINDOWEVENT_RESIZED:
|
||||||
Log.d("SDL_WINDOWEVENT_RESIZED win=", event.window.windowID, " pos=", event.window.data1,
|
Log.d("SDL_WINDOWEVENT_RESIZED win=", event.window.windowID, " pos=", event.window.data1,
|
||||||
|
",", event.window.data2);
|
||||||
|
break;
|
||||||
|
case SDL_WINDOWEVENT_SIZE_CHANGED:
|
||||||
|
Log.d("SDL_WINDOWEVENT_SIZE_CHANGED win=", event.window.windowID, " pos=", event.window.data1,
|
||||||
",", event.window.data2);
|
",", event.window.data2);
|
||||||
|
w.onResize(event.window.data1, event.window.data2);
|
||||||
break;
|
break;
|
||||||
case SDL_WINDOWEVENT_CLOSE:
|
case SDL_WINDOWEVENT_CLOSE:
|
||||||
Log.d("SDL_WINDOWEVENT_CLOSE win=", event.window.windowID);
|
Log.d("SDL_WINDOWEVENT_CLOSE win=", event.window.windowID);
|
||||||
|
|
Loading…
Reference in New Issue