summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/video/cocoa/cocoa_v.h88
-rw-r--r--src/video/cocoa/cocoa_v.mm37
2 files changed, 46 insertions, 79 deletions
diff --git a/src/video/cocoa/cocoa_v.h b/src/video/cocoa/cocoa_v.h
index bae0f5289..f9920c20e 100644
--- a/src/video/cocoa/cocoa_v.h
+++ b/src/video/cocoa/cocoa_v.h
@@ -50,47 +50,18 @@ public:
VideoDriver_Cocoa();
const char *Start(const StringList &param) override;
-
- /** Stop the video driver */
void Stop() override;
+ void MainLoop() override;
- /** Mark dirty a screen region
- * @param left x-coordinate of left border
- * @param top y-coordinate of top border
- * @param width width or dirty rectangle
- * @param height height of dirty rectangle
- */
void MakeDirty(int left, int top, int width, int height) override;
+ bool AfterBlitterChange() override;
- /** Programme main loop */
- void MainLoop() override;
-
- /** Change window resolution
- * @param w New window width
- * @param h New window height
- * @return Whether change was successful
- */
bool ChangeResolution(int w, int h) override;
-
- /** Set a new window mode
- * @param fullscreen Whether to set fullscreen mode or not
- * @return Whether changing the screen mode was successful
- */
bool ToggleFullscreen(bool fullscreen) override;
- /** Callback invoked after the blitter was changed.
- * @return True if no error.
- */
- bool AfterBlitterChange() override;
-
- /**
- * An edit box lost the input focus. Abort character compositing if necessary.
- */
void EditBoxLostFocus() override;
- /** Return driver name
- * @return driver name
- */
+ /** Return driver name */
const char *GetName() const override { return "cocoa"; }
/* --- The following methods should be private, but can't be due to Obj-C limitations. --- */
@@ -98,67 +69,30 @@ public:
/** Main game loop. */
void GameLoop(); // In event.mm.
- /** Resize the window.
- * @return whether the window was successfully resized
- */
bool WindowResized();
- /** Convert local coordinate to window server (CoreGraphics) coordinate
- * @param p local coordinates
- * @return window driver coordinates
- */
- CGPoint PrivateLocalToCG(NSPoint *p);
-
protected:
Dimension GetScreenSize() const override;
private:
+ NSPoint GetMouseLocation(NSEvent *event);
+ bool MouseIsInsideView(NSPoint *pt);
+ CGPoint PrivateLocalToCG(NSPoint *p);
bool PollEvent(); // In event.mm.
void MouseMovedEvent(int x, int y); // In event.mm.
- void WarpCursor(int x, int y); // In event.mm.
+ bool IsFullscreen();
void GameSizeChanged();
- void UpdateVideoModes();
-
- /**
- * This function copies 8bpp pixels from the screen buffer in 32bpp windowed mode.
- *
- * @param left The x coord for the left edge of the box to blit.
- * @param top The y coord for the top edge of the box to blit.
- * @param right The x coord for the right edge of the box to blit.
- * @param bottom The y coord for the bottom edge of the box to blit.
- */
- void BlitIndexedToView32(int left, int top, int right, int bottom);
+ void UpdateVideoModes();
void GetDeviceInfo();
bool SetVideoMode(int width, int height, int bpp);
- /** Draw window
- * @param force_update Whether to redraw unconditionally
- */
- void Draw(bool force_update = false);
-
- /** Update the palette */
void UpdatePalette(uint first_color, uint num_colors);
-
- /** Are we in fullscreen mode
- * @return whether fullscreen mode is currently used
- */
- bool IsFullscreen();
-
- /** Return the mouse location
- * @param event UI event
- * @return mouse location as NSPoint
- */
- NSPoint GetMouseLocation(NSEvent *event);
-
- /** Return whether the mouse is within our view
- * @param pt Mouse coordinates
- * @return Whether mouse coordinates are within view
- */
- bool MouseIsInsideView(NSPoint *pt);
-
void CheckPaletteAnim();
+
+ void Draw(bool force_update = false);
+ void BlitIndexedToView32(int left, int top, int right, int bottom);
};
class FVideoDriver_Cocoa : public DriverFactoryBase {
diff --git a/src/video/cocoa/cocoa_v.mm b/src/video/cocoa/cocoa_v.mm
index 3350e32b8..2525af1d4 100644
--- a/src/video/cocoa/cocoa_v.mm
+++ b/src/video/cocoa/cocoa_v.mm
@@ -406,6 +406,10 @@ void VideoDriver_Cocoa::GetDeviceInfo()
CGDisplayModeRelease(cur_mode);
}
+/**
+ * Are we in fullscreen mode
+ * @return whether fullscreen mode is currently used
+ */
bool VideoDriver_Cocoa::IsFullscreen()
{
return this->window != nil && ([ this->window styleMask ] & NSWindowStyleMaskFullScreen) != 0;
@@ -524,6 +528,14 @@ bool VideoDriver_Cocoa::SetVideoMode(int width, int height, int bpp)
return ret;
}
+/**
+ * This function copies 8bpp pixels from the screen buffer in 32bpp windowed mode.
+ *
+ * @param left The x coord for the left edge of the box to blit.
+ * @param top The y coord for the top edge of the box to blit.
+ * @param right The x coord for the right edge of the box to blit.
+ * @param bottom The y coord for the bottom edge of the box to blit.
+ */
void VideoDriver_Cocoa::BlitIndexedToView32(int left, int top, int right, int bottom)
{
const uint32 *pal = this->palette;
@@ -539,7 +551,9 @@ void VideoDriver_Cocoa::BlitIndexedToView32(int left, int top, int right, int bo
}
}
-
+/** Draw window
+ * @param force_update Whether to redraw unconditionally
+ */
void VideoDriver_Cocoa::Draw(bool force_update)
{
PerformanceMeasurer framerate(PFE_VIDEO);
@@ -582,6 +596,7 @@ void VideoDriver_Cocoa::Draw(bool force_update)
this->num_dirty_rects = 0;
}
+/** Update the palette */
void VideoDriver_Cocoa::UpdatePalette(uint first_color, uint num_colors)
{
if (this->buffer_depth != 8) return;
@@ -597,7 +612,11 @@ void VideoDriver_Cocoa::UpdatePalette(uint first_color, uint num_colors)
this->num_dirty_rects = lengthof(this->dirty_rects);
}
-/* Convert local coordinate to window server (CoreGraphics) coordinate */
+/**
+ * Convert local coordinate to window server (CoreGraphics) coordinate
+ * @param p local coordinates
+ * @return window driver coordinates
+ */
CGPoint VideoDriver_Cocoa::PrivateLocalToCG(NSPoint *p)
{
@@ -614,6 +633,11 @@ CGPoint VideoDriver_Cocoa::PrivateLocalToCG(NSPoint *p)
return cgp;
}
+/**
+ * Return the mouse location
+ * @param event UI event
+ * @return mouse location as NSPoint
+ */
NSPoint VideoDriver_Cocoa::GetMouseLocation(NSEvent *event)
{
NSPoint pt;
@@ -629,6 +653,11 @@ NSPoint VideoDriver_Cocoa::GetMouseLocation(NSEvent *event)
return pt;
}
+/**
+ * Return whether the mouse is within our view
+ * @param pt Mouse coordinates
+ * @return Whether mouse coordinates are within view
+ */
bool VideoDriver_Cocoa::MouseIsInsideView(NSPoint *pt)
{
return [ cocoaview mouse:*pt inRect:[ this->cocoaview bounds ] ];
@@ -645,6 +674,10 @@ static void ClearWindowBuffer(uint32 *buffer, uint32 pitch, uint32 height)
}
}
+/**
+ * Resize the window.
+ * @return whether the window was successfully resized
+ */
bool VideoDriver_Cocoa::WindowResized()
{
if (this->window == nil || this->cocoaview == nil) return true;