Initialize windows with width/height/scale args on Skia port

This commit is contained in:
David Capello 2015-10-14 10:25:24 -03:00
parent 66c5e04a58
commit f9d0254d91
8 changed files with 33 additions and 17 deletions

View File

@ -36,7 +36,10 @@ public:
OSXWindowDelegate* m_delegate;
int m_scale;
}
- (OSXWindow*)initWithImpl:(OSXWindowImpl*)impl;
- (OSXWindow*)initWithImpl:(OSXWindowImpl*)impl
width:(int)width
height:(int)height
scale:(int)scale;
- (OSXWindowImpl*)impl;
- (int)scale;
- (void)setScale:(int)scale;

View File

@ -18,11 +18,14 @@
@implementation OSXWindow
- (OSXWindow*)initWithImpl:(OSXWindowImpl*)impl
width:(int)width
height:(int)height
scale:(int)scale
{
m_impl = impl;
m_scale = 1;
m_scale = scale;
NSRect rect = NSMakeRect(0, 0, 640, 480);
NSRect rect = NSMakeRect(0, 0, width, height);
self = [self initWithContentRect:rect
styleMask:(NSTitledWindowMask | NSClosableWindowMask |
NSMiniaturizableWindowMask | NSResizableWindowMask)

View File

@ -18,7 +18,7 @@
namespace she {
SkiaDisplay::SkiaDisplay(int width, int height, int scale)
: m_window(instance()->eventQueue(), this)
: m_window(instance()->eventQueue(), this, width, height, scale)
, m_surface(new SkiaSurface)
, m_customSurface(false)
, m_nativeCursor(kArrowCursor)

View File

@ -22,7 +22,8 @@ class SkiaWindow {
public:
enum class Backend { NONE, GL };
SkiaWindow(EventQueue* queue, SkiaDisplay* display);
SkiaWindow(EventQueue* queue, SkiaDisplay* display,
int width, int height, int scale);
~SkiaWindow();
int scale() const;

View File

@ -33,12 +33,16 @@ namespace she {
class SkiaWindow::Impl : public OSXWindowImpl {
public:
Impl(EventQueue* queue, SkiaDisplay* display)
Impl(EventQueue* queue, SkiaDisplay* display,
int width, int height, int scale)
: m_display(display)
, m_backend(Backend::NONE)
, m_nsGL(nil) {
m_closing = false;
m_window = [[OSXWindow alloc] initWithImpl:this];
m_window = [[OSXWindow alloc] initWithImpl:this
width:width
height:height
scale:scale];
}
~Impl() {
@ -261,8 +265,10 @@ private:
#endif
};
SkiaWindow::SkiaWindow(EventQueue* queue, SkiaDisplay* display)
: m_impl(new Impl(queue, display))
SkiaWindow::SkiaWindow(EventQueue* queue, SkiaDisplay* display,
int width, int height, int scale)
: m_impl(new Impl(queue, display,
width, height, scale))
{
}

View File

@ -23,8 +23,10 @@
namespace she {
SkiaWindow::SkiaWindow(EventQueue* queue, SkiaDisplay* display)
: m_queue(queue)
SkiaWindow::SkiaWindow(EventQueue* queue, SkiaDisplay* display,
int width, int height, int scale)
: WinWindow<SkiaWindow>(width, height, scale)
, m_queue(queue)
, m_display(display)
, m_backend(Backend::NONE)
#if SK_SUPPORT_GPU

View File

@ -27,7 +27,8 @@ class SkiaWindow : public WinWindow<SkiaWindow> {
public:
enum class Backend { NONE, GL, ANGLE };
SkiaWindow(EventQueue* queue, SkiaDisplay* display);
SkiaWindow(EventQueue* queue, SkiaDisplay* display,
int width, int height, int scale);
~SkiaWindow();
void queueEventImpl(Event& ev);

View File

@ -31,15 +31,15 @@ namespace she {
template<typename T>
class WinWindow {
public:
WinWindow()
WinWindow(int width, int height, int scale)
: m_clientSize(1, 1)
, m_restoredSize(0, 0) {
registerClass();
m_hwnd = createHwnd(this);
m_hwnd = createHwnd(this, width, height);
m_hcursor = NULL;
m_hasMouse = false;
m_captureMouse = false;
m_scale = 1;
m_scale = scale;
}
void queueEvent(Event& ev) {
@ -484,14 +484,14 @@ namespace she {
throw std::runtime_error("Error registering window class");
}
static HWND createHwnd(WinWindow* self) {
static HWND createHwnd(WinWindow* self, int width, int height) {
HWND hwnd = CreateWindowEx(
WS_EX_APPWINDOW | WS_EX_ACCEPTFILES,
SHE_WND_CLASS_NAME,
L"",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
width, height,
nullptr,
nullptr,
GetModuleHandle(nullptr),