@@ -113,7 +113,7 @@ public: | |||
Window win(app); | |||
ScopedPointer<MyCustomTopLevelWidget> widget; | |||
{ | |||
const ScopedGraphicsContext sgc(win); | |||
const Window::ScopedGraphicsContext sgc(win); | |||
widget = new MyCustomTopLevelWidget(win); | |||
} | |||
app.exec(); | |||
@@ -89,7 +89,7 @@ static double getDesktopScaleFactor() | |||
XrmInitialize(); | |||
if (char* const rms = XResourceManagerString(view->world->impl->display)) | |||
if (char* const rms = XResourceManagerString(display)) | |||
{ | |||
if (const XrmDatabase sdb = XrmGetStringDatabase(rms)) | |||
{ | |||
@@ -42,6 +42,19 @@ typedef DGL_NAMESPACE::VulkanImage DemoImage; | |||
START_NAMESPACE_DGL | |||
// Partial specialization is not allowed in C++, so we need to define these here | |||
template<> inline | |||
ExampleImagesWidget<SubWidget, DemoImage>::ExampleImagesWidget(Widget* const parentWidget) | |||
: SubWidget(parentWidget) { init(parentWidget->getApp()); } | |||
template<> inline | |||
ExampleImagesWidget<TopLevelWidget, DemoImage>::ExampleImagesWidget(Window& windowToMapTo) | |||
: TopLevelWidget(windowToMapTo) { init(windowToMapTo.getApp()); } | |||
template<> | |||
ExampleImagesWidget<StandaloneWindow, DemoImage>::ExampleImagesWidget(Application& app) | |||
: StandaloneWindow(app) { init(app); done(); } | |||
typedef ExampleImagesWidget<SubWidget, DemoImage> ExampleImagesSubWidget; | |||
typedef ExampleImagesWidget<TopLevelWidget, DemoImage> ExampleImagesTopLevelWidget; | |||
typedef ExampleImagesWidget<StandaloneWindow, DemoImage> ExampleImagesStandaloneWindow; | |||
@@ -127,9 +127,13 @@ class NanoExampleWindow : public Window | |||
{ | |||
public: | |||
explicit NanoExampleWindow(Application& app) | |||
: Window(app), | |||
container(*this) | |||
: Window(app) | |||
{ | |||
{ | |||
const ScopedGraphicsContext sgc(*this); | |||
container = new NanoRectanglesContainer(*this); | |||
} | |||
const uint targetWidth = 400; | |||
const uint targetHeight = 400; | |||
const double scaleFactor = getScaleFactor(); | |||
@@ -141,7 +145,7 @@ public: | |||
} | |||
private: | |||
NanoRectanglesContainer container; | |||
ScopedPointer<NanoRectanglesContainer> container; | |||
}; | |||
// -------------------------------------------------------------------------------------------------------------------- | |||
@@ -154,7 +158,6 @@ int main() | |||
Application app; | |||
NanoExampleWindow win(app); | |||
win.show(); | |||
app.exec(); | |||
@@ -21,8 +21,8 @@ | |||
// DGL Stuff | |||
#include "../../dgl/ImageBase.hpp" | |||
#include "../../dgl/StandaloneWindow.hpp" | |||
#include "../../dgl/SubWidget.hpp" | |||
#include "../../dgl/TopLevelWidget.hpp" | |||
// ------------------------------------------------------ | |||
// Images | |||
@@ -55,70 +55,34 @@ public: | |||
static constexpr const char* kExampleWidgetName = "Images"; | |||
// SubWidget | |||
ExampleImagesWidget(Widget* const parent) | |||
: BaseWidget(parent), | |||
imgTop1st(1), | |||
imgTop2nd(2), | |||
imgTop3rd(3), | |||
img1x(0), | |||
img2x(kImg2max), | |||
img3y(kImg3max), | |||
img1rev(false), | |||
img2rev(true), | |||
img3rev(true), | |||
img1(CatPics::cat1Data, CatPics::cat1Width, CatPics::cat1Height, kImageFormatBGR), | |||
img2(CatPics::cat2Data, CatPics::cat2Width, CatPics::cat2Height, kImageFormatBGR), | |||
img3(CatPics::cat3Data, CatPics::cat3Width, CatPics::cat3Height, kImageFormatBGR) | |||
{ | |||
BaseWidget::setSize(500, 400); | |||
parent->getApp().addIdleCallback(this); | |||
} | |||
explicit ExampleImagesWidget(Widget* const parent); | |||
// TopLevelWidget | |||
ExampleImagesWidget(Window& windowToMapTo) | |||
: BaseWidget(windowToMapTo), | |||
imgTop1st(1), | |||
imgTop2nd(2), | |||
imgTop3rd(3), | |||
img1x(0), | |||
img2x(kImg2max), | |||
img3y(kImg3max), | |||
img1rev(false), | |||
img2rev(true), | |||
img3rev(true), | |||
img1(CatPics::cat1Data, CatPics::cat1Width, CatPics::cat1Height, kImageFormatBGR), | |||
img2(CatPics::cat2Data, CatPics::cat2Width, CatPics::cat2Height, kImageFormatBGR), | |||
img3(CatPics::cat3Data, CatPics::cat3Width, CatPics::cat3Height, kImageFormatBGR) | |||
{ | |||
BaseWidget::setSize(500, 400); | |||
windowToMapTo.getApp().addIdleCallback(this); | |||
} | |||
explicit ExampleImagesWidget(Window& windowToMapTo); | |||
// StandaloneWindow | |||
ExampleImagesWidget(Application& app) | |||
: BaseWidget(app), | |||
imgTop1st(1), | |||
imgTop2nd(2), | |||
imgTop3rd(3), | |||
img1x(0), | |||
img2x(kImg2max), | |||
img3y(kImg3max), | |||
img1rev(false), | |||
img2rev(true), | |||
img3rev(true), | |||
img1(CatPics::cat1Data, CatPics::cat1Width, CatPics::cat1Height, kImageFormatBGR), | |||
img2(CatPics::cat2Data, CatPics::cat2Width, CatPics::cat2Height, kImageFormatBGR), | |||
img3(CatPics::cat3Data, CatPics::cat3Width, CatPics::cat3Height, kImageFormatBGR) | |||
explicit ExampleImagesWidget(Application& app); | |||
protected: | |||
void init(Application& app) | |||
{ | |||
BaseWidget::setSize(500, 400); | |||
imgTop1st = 1; | |||
imgTop2nd = 2; | |||
imgTop3rd = 3; | |||
img1x = 0; | |||
img2x = kImg2max; | |||
img3y = kImg3max; | |||
img1rev = false; | |||
img2rev = true; | |||
img3rev = true; | |||
img1 = BaseImage(CatPics::cat1Data, CatPics::cat1Width, CatPics::cat1Height, kImageFormatBGR); | |||
img2 = BaseImage(CatPics::cat2Data, CatPics::cat2Width, CatPics::cat2Height, kImageFormatBGR); | |||
img3 = BaseImage(CatPics::cat3Data, CatPics::cat3Width, CatPics::cat3Height, kImageFormatBGR); | |||
BaseWidget::setSize(500, 400); | |||
app.addIdleCallback(this); | |||
done(); | |||
} | |||
protected: | |||
void idleCallback() noexcept override | |||
{ | |||
if (img1rev) | |||
@@ -21,8 +21,8 @@ | |||
// DGL Stuff | |||
#include "../../dgl/Color.hpp" | |||
#include "../../dgl/StandaloneWindow.hpp" | |||
#include "../../dgl/SubWidget.hpp" | |||
#include "../../dgl/TopLevelWidget.hpp" | |||
START_NAMESPACE_DGL | |||
@@ -38,26 +38,13 @@ public: | |||
static constexpr const char* const kExampleWidgetName = "Rectangles"; | |||
// SubWidget | |||
explicit ExampleRectanglesWidget(Widget* const parentWidget) | |||
: BaseWidget(parentWidget) | |||
{ | |||
init(); | |||
} | |||
explicit ExampleRectanglesWidget(Widget* const parent); | |||
// TopLevelWidget | |||
explicit ExampleRectanglesWidget(Window& windowToMapTo) | |||
: BaseWidget(windowToMapTo) | |||
{ | |||
init(); | |||
} | |||
explicit ExampleRectanglesWidget(Window& windowToMapTo); | |||
// StandaloneWindow | |||
explicit ExampleRectanglesWidget(Application& app) | |||
: BaseWidget(app) | |||
{ | |||
init(); | |||
done(); | |||
} | |||
explicit ExampleRectanglesWidget(Application& app); | |||
void init() | |||
{ | |||
@@ -170,6 +157,31 @@ protected: | |||
} | |||
}; | |||
// SubWidget | |||
template<> inline | |||
ExampleRectanglesWidget<SubWidget>::ExampleRectanglesWidget(Widget* const parentWidget) | |||
: SubWidget(parentWidget) | |||
{ | |||
init(); | |||
} | |||
// TopLevelWidget | |||
template<> inline | |||
ExampleRectanglesWidget<TopLevelWidget>::ExampleRectanglesWidget(Window& windowToMapTo) | |||
: TopLevelWidget(windowToMapTo) | |||
{ | |||
init(); | |||
} | |||
// StandaloneWindow | |||
template<> inline | |||
ExampleRectanglesWidget<StandaloneWindow>::ExampleRectanglesWidget(Application& app) | |||
: StandaloneWindow(app) | |||
{ | |||
init(); | |||
done(); | |||
} | |||
typedef ExampleRectanglesWidget<SubWidget> ExampleRectanglesSubWidget; | |||
typedef ExampleRectanglesWidget<TopLevelWidget> ExampleRectanglesTopLevelWidget; | |||
typedef ExampleRectanglesWidget<StandaloneWindow> ExampleRectanglesStandaloneWindow; | |||
@@ -21,8 +21,8 @@ | |||
// DGL Stuff | |||
#include "../../dgl/Color.hpp" | |||
#include "../../dgl/StandaloneWindow.hpp" | |||
#include "../../dgl/SubWidget.hpp" | |||
#include "../../dgl/TopLevelWidget.hpp" | |||
START_NAMESPACE_DGL | |||
@@ -41,26 +41,13 @@ public: | |||
static constexpr const char* const kExampleWidgetName = "Shapes"; | |||
// SubWidget | |||
explicit ExampleShapesWidget(Widget* const parentWidget) | |||
: BaseWidget(parentWidget) | |||
{ | |||
this->setSize(300, 300); | |||
} | |||
explicit ExampleShapesWidget(Widget* const parent); | |||
// TopLevelWidget | |||
explicit ExampleShapesWidget(Window& windowToMapTo) | |||
: BaseWidget(windowToMapTo) | |||
{ | |||
this->setSize(300, 300); | |||
} | |||
explicit ExampleShapesWidget(Window& windowToMapTo); | |||
// StandaloneWindow | |||
explicit ExampleShapesWidget(Application& app) | |||
: BaseWidget(app) | |||
{ | |||
this->setSize(300, 300); | |||
done(); | |||
} | |||
explicit ExampleShapesWidget(Application& app); | |||
protected: | |||
void onDisplay() override | |||
@@ -108,6 +95,31 @@ protected: | |||
} | |||
}; | |||
// SubWidget | |||
template<> inline | |||
ExampleShapesWidget<SubWidget>::ExampleShapesWidget(Widget* const parentWidget) | |||
: SubWidget(parentWidget) | |||
{ | |||
setSize(300, 300); | |||
} | |||
// TopLevelWidget | |||
template<> inline | |||
ExampleShapesWidget<TopLevelWidget>::ExampleShapesWidget(Window& windowToMapTo) | |||
: TopLevelWidget(windowToMapTo) | |||
{ | |||
setSize(300, 300); | |||
} | |||
// StandaloneWindow | |||
template<> inline | |||
ExampleShapesWidget<StandaloneWindow>::ExampleShapesWidget(Application& app) | |||
: StandaloneWindow(app) | |||
{ | |||
setSize(300, 300); | |||
done(); | |||
} | |||
typedef ExampleShapesWidget<SubWidget> ExampleShapesSubWidget; | |||
typedef ExampleShapesWidget<TopLevelWidget> ExampleShapesTopLevelWidget; | |||
typedef ExampleShapesWidget<StandaloneWindow> ExampleShapesStandaloneWindow; | |||