summaryrefslogtreecommitdiff
path: root/plugingui/window.cc
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2020-12-29 16:09:43 +0100
committerBent Bisballe Nyeng <deva@aasimon.org>2020-12-29 16:39:54 +0100
commit645250e1cd8ce9bc1faea599df7a1b05836bfeb8 (patch)
treec6311afab3900d2dd2aecbfbe1ac348d0e48c428 /plugingui/window.cc
parentdce64999d3325c5b55499d6ba657066efa48fbff (diff)
Split UI code into application/plugin UI and UI library.
Diffstat (limited to 'plugingui/window.cc')
-rw-r--r--plugingui/window.cc266
1 files changed, 0 insertions, 266 deletions
diff --git a/plugingui/window.cc b/plugingui/window.cc
deleted file mode 100644
index 5e0ad31..0000000
--- a/plugingui/window.cc
+++ /dev/null
@@ -1,266 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- * window.cc
- *
- * Sun Oct 9 13:11:53 CEST 2011
- * Copyright 2011 Bent Bisballe Nyeng
- * deva@aasimon.org
- ****************************************************************************/
-
-/*
- * This file is part of DrumGizmo.
- *
- * DrumGizmo is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DrumGizmo is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with DrumGizmo; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
-#include "window.h"
-
-#include <cstring>
-
-#include "painter.h"
-
-#ifndef UI_PUGL
-#ifdef UI_X11
-#include "nativewindow_x11.h"
-#endif // UI_X11
-#ifdef UI_WIN32
-#include "nativewindow_win32.h"
-#endif // UI_WIN32
-#ifdef UI_COCOA
-#include "nativewindow_cocoa.h"
-#endif // UI_COCOA
-#else
-#include "nativewindow_pugl.h"
-#endif // !UI_PUGL
-
-namespace GUI
-{
-
-Window::Window(void* native_window)
- : Widget(nullptr)
- , wpixbuf(1, 1)
-{
- // Make sure we have a valid size when initialising the NativeWindow
- _width = wpixbuf.width;
- _height = wpixbuf.height;
-
-#ifndef UI_PUGL
-#ifdef UI_X11
- native = new NativeWindowX11(native_window, *this);
-#endif // UI_X11
-#ifdef UI_WIN32
- native = new NativeWindowWin32(native_window, *this);
-#endif // UI_WIN32
-#ifdef UI_COCOA
- native = new NativeWindowCocoa(native_window, *this);
-#endif // UI_COCOA
-#else
- // Use pugl
- native = new NativeWindowPugl(native_window, *this);
-#endif // !UI_PUGL
-
- eventhandler = new EventHandler(*native, *this);
-
- setVisible(true); // The root widget is always visible.
-}
-
-Window::~Window()
-{
- delete native;
- delete eventhandler;
-}
-
-void Window::setFixedSize(int w, int h)
-{
- native->setFixedSize(w, h);
-}
-
-void Window::setAlwaysOnTop(bool always_on_top)
-{
- native->setAlwaysOnTop(always_on_top);
-}
-
-void Window::setCaption(const std::string& caption)
-{
- native->setCaption(caption);
-}
-
-//! This overload the resize method on Widget and simply requests a window resize
-//! on the windowmanager/OS. The resized() method is called by the event handler
-//! once the window has been resized.
-void Window::resize(std::size_t width, std::size_t height)
-{
- native->resize(width, height);
-}
-
-//! This overload the move method on Widget and simply requests a window move
-//! on the windowmanager/OS. The moved() method is called by the event handler
-//! once the window has been moved.
-void Window::move(int x, int y)
-{
- native->move(x, y);
-}
-
-void Window::show()
-{
- Widget::show();
- redraw();
- native->show();
-}
-
-void Window::hide()
-{
- native->hide();
- Widget::hide();
-}
-
-Window* Window::window()
-{
- return this;
-}
-
-Size Window::getNativeSize()
-{
- auto sz = native->getSize();
- return {sz.first, sz.second};
-}
-
-ImageCache& Window::getImageCache()
-{
- return image_cache;
-}
-
-EventHandler* Window::eventHandler()
-{
- return eventhandler;
-}
-
-Widget* Window::keyboardFocus()
-{
- return _keyboardFocus;
-}
-
-void Window::setKeyboardFocus(Widget* widget)
-{
- auto oldFocusWidget = _keyboardFocus;
- _keyboardFocus = widget;
-
- if(oldFocusWidget)
- {
- oldFocusWidget->redraw();
- }
-
- if(_keyboardFocus)
- {
- _keyboardFocus->redraw();
- }
-}
-
-Widget* Window::buttonDownFocus()
-{
- return _buttonDownFocus;
-}
-
-void Window::setButtonDownFocus(Widget* widget)
-{
- _buttonDownFocus = widget;
- native->grabMouse(widget != nullptr);
-}
-
-Widget* Window::mouseFocus()
-{
- return _mouseFocus;
-}
-
-void Window::setMouseFocus(Widget* widget)
-{
- _mouseFocus = widget;
-
-}
-
-void Window::needsRedraw()
-{
- needs_redraw = true;
-}
-
-void* Window::getNativeWindowHandle() const
-{
- return native->getNativeWindowHandle();
-}
-
-Point Window::translateToScreen(const Point& point)
-{
- return native->translateToScreen(point);
-}
-
-std::size_t Window::translateToWindowX()
-{
- return 0;
-}
-
-std::size_t Window::translateToWindowY()
-{
- return 0;
-}
-
-//! Called by event handler when an windowmanager/OS window resize event has
-//! been received. Do not call this directly.
-void Window::resized(std::size_t width, std::size_t height)
-{
- auto size = native->getSize();
- if((wpixbuf.width != size.first) ||
- (wpixbuf.height != size.second))
- {
- wpixbuf.realloc(size.first, size.second);
- Widget::resize(size.first, size.second);
- }
-
- updateBuffer();
-}
-
-//! Called by event handler when an windowmanager/OS window move event has
-//! been received. Do not call this directly.
-void Window::moved(int x, int y)
-{
- // Make sure widget coordinates are updated.
- Widget::move(x, y);
-}
-
-bool Window::updateBuffer()
-{
- if(!native)
- {
- return false;
- }
-
- if(!needs_redraw)
- {
- // Nothing changed, don't update anything.
- return false;
- }
-
- auto pixel_buffers = getPixelBuffers();
-
- auto dirty_rect = wpixbuf.updateBuffer(pixel_buffers);
-
- if(!dirty_rect.empty())
- {
- native->redraw(dirty_rect);
- }
- needs_redraw = false;
-
- return true;
-}
-
-} // GUI::