summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/video/cocoa/cocoa_v.h109
1 files changed, 93 insertions, 16 deletions
diff --git a/src/video/cocoa/cocoa_v.h b/src/video/cocoa/cocoa_v.h
index 498f40cbb..cf8867b0d 100644
--- a/src/video/cocoa/cocoa_v.h
+++ b/src/video/cocoa/cocoa_v.h
@@ -20,16 +20,36 @@ class VideoDriver_Cocoa: public VideoDriver {
public:
/* virtual */ const char *Start(const char * const *param);
+ /** Stop the video driver */
/* virtual */ void Stop();
+ /** 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
+ */
/* virtual */ void MakeDirty(int left, int top, int width, int height);
+ /** Programme main loop */
/* virtual */ void MainLoop();
+ /** Change window resolution
+ * @param w New window width
+ * @param h New window height
+ * @return Whether change was successful
+ */
/* virtual */ bool ChangeResolution(int w, int h);
+ /** Set a new window mode
+ * @param fullscreen Whether to set fullscreen mode or not
+ * @return Whether changing the screen mode was successful
+ */
/* virtual */ bool ToggleFullscreen(bool fullscreen);
+ /** Return driver name
+ * @return driver name
+ */
/* virtual */ const char *GetName() const { return "cocoa"; }
};
@@ -49,59 +69,116 @@ public:
*/
class CocoaSubdriver {
public:
- int device_width;
- int device_height;
- int device_depth;
+ int device_width; ///< Width of device in pixel
+ int device_height; ///< Height of device in pixel
+ int device_depth; ///< Colour depth of device in bit
- int window_width;
- int window_height;
+ int window_width; ///< Current window width in pixel
+ int window_height; ///< Current window height in pixel
int window_pitch;
- int buffer_depth;
- void *pixel_buffer; // used for direct pixel access
- void *window_buffer; // has colour translation from palette to screen
- id window; // pointer to window object
+ int buffer_depth; ///< Colour depth of used frame buffer
+ void *pixel_buffer; ///< used for direct pixel access
+ void *window_buffer; ///< Colour translation from palette to screen
+ id window; ///< Pointer to window object
# define MAX_DIRTY_RECTS 100
- Rect dirty_rects[MAX_DIRTY_RECTS];
- int num_dirty_rects;
- uint32 palette[256];
+ Rect dirty_rects[MAX_DIRTY_RECTS]; ///< dirty rectangles
+ int num_dirty_rects; ///< Number of dirty rectangles
+ uint32 palette[256]; ///< Colour Palette
- bool active;
+ bool active; ///< Whether the window is visible
bool setup;
- id cocoaview; // pointer to view object
+ id cocoaview; ///< Pointer to view object
/* Separate driver vars for Quarz
* Needed here in order to avoid much code duplication */
- CGContextRef cgcontext;
+ CGContextRef cgcontext; ///< Context reference for Quartz subdriver
/* Driver methods */
+ /** Initialize driver */
virtual ~CocoaSubdriver() {}
+ /** Draw window
+ * @param force_update Whether to redraw unconditionally
+ */
virtual void Draw(bool force_update = false) = 0;
+
+ /** 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
+ */
virtual void MakeDirty(int left, int top, int width, int height) = 0;
+
+ /** Update the palette */
virtual void UpdatePalette(uint first_color, uint num_colors) = 0;
virtual uint ListModes(OTTD_Point *modes, uint max_modes) = 0;
+ /** Change window resolution
+ * @param w New window width
+ * @param h New window height
+ * @return Whether change was successful
+ */
virtual bool ChangeResolution(int w, int h) = 0;
+ /** Are we in fullscreen mode
+ * @return whether fullscreen mode is currently used
+ */
virtual bool IsFullscreen() = 0;
+
+ /** Toggle between fullscreen and windowed mode
+ * @return whether switch was successfull
+ */
virtual bool ToggleFullscreen() { return false; };
+
+ /** Return the width of the current view
+ * @return width of the current view
+ */
virtual int GetWidth() = 0;
+
+ /** Return the height of the current view
+ * @return height of the current view
+ */
virtual int GetHeight() = 0;
+
+ /** Return the current pixel buffer
+ * @return pixelbuffer
+ */
virtual void *GetPixelBuffer() = 0;
- /* Convert local coordinate to window server (CoreGraphics) coordinate */
+ /** Convert local coordinate to window server (CoreGraphics) coordinate
+ * @param p local coordinates
+ * @return window driver coordinates
+ */
virtual CGPoint PrivateLocalToCG(NSPoint *p) = 0;
+ /** Return the mouse location
+ * @param event UI event
+ * @return mouse location as NSPoint
+ */
virtual NSPoint GetMouseLocation(NSEvent *event) = 0;
+
+ /** Return whether the mouse is within our view
+ * @param pt Mouse coordinates
+ * @return Whether mouse coordinates are within view
+ */
virtual bool MouseIsInsideView(NSPoint *pt) = 0;
+ /** Return whether the window is active (visible)
+ * @return whether the window is visible or not
+ */
virtual bool IsActive() = 0;
+ /** Makes the *game region* of the window 100% opaque. */
virtual void SetPortAlphaOpaque() { return; };
+
+ /** Whether the window was successfully resized
+ * @return whether the window was succesfully resized
+ */
virtual bool WindowResized() { return false; };
};