aboutsummaryrefslogtreecommitdiffstats
path: root/distrib/sdl-1.2.12/src/video/quartz/SDL_QuartzWindow.m
diff options
context:
space:
mode:
Diffstat (limited to 'distrib/sdl-1.2.12/src/video/quartz/SDL_QuartzWindow.m')
-rw-r--r--distrib/sdl-1.2.12/src/video/quartz/SDL_QuartzWindow.m232
1 files changed, 0 insertions, 232 deletions
diff --git a/distrib/sdl-1.2.12/src/video/quartz/SDL_QuartzWindow.m b/distrib/sdl-1.2.12/src/video/quartz/SDL_QuartzWindow.m
deleted file mode 100644
index b56f9a7..0000000
--- a/distrib/sdl-1.2.12/src/video/quartz/SDL_QuartzWindow.m
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2003 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this library; if not, write to the Free
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
- Sam Lantinga
- slouken@libsdl.org
-*/
-#include "SDL_config.h"
-
-#include "SDL_QuartzVideo.h"
-#include "SDL_QuartzWM.h"
-#include "SDL_QuartzWindow.h"
-
-/*
- This function makes the *SDL region* of the window 100% opaque.
- The genie effect uses the alpha component. Otherwise,
- it doesn't seem to matter what value it has.
-*/
-static void QZ_SetPortAlphaOpaque () {
-
- SDL_Surface *surface = current_video->screen;
- int bpp;
-
- bpp = surface->format->BitsPerPixel;
-
- if (bpp == 32) {
-
- Uint32 *pixels = (Uint32*) surface->pixels;
- Uint32 rowPixels = surface->pitch / 4;
- Uint32 i, j;
-
- for (i = 0; i < surface->h; i++)
- for (j = 0; j < surface->w; j++) {
-
- pixels[ (i * rowPixels) + j ] |= 0xFF000000;
- }
- }
-}
-
-@implementation SDL_QuartzWindow
-
-/* we override these methods to fix the miniaturize animation/dock icon bug */
-- (void)miniaturize:(id)sender
-{
- if (SDL_VideoSurface->flags & SDL_OPENGL) {
-
- /*
- Future: Grab framebuffer and put into NSImage
- [ qz_window setMiniwindowImage:image ];
- */
- }
- else {
-
- /* make the alpha channel opaque so anim won't have holes in it */
- QZ_SetPortAlphaOpaque ();
- }
-
- /* window is hidden now */
- SDL_PrivateAppActive (0, SDL_APPACTIVE);
-
- [ super miniaturize:sender ];
-}
-
-- (void)display
-{
- /*
- This method fires just before the window deminaturizes from the Dock.
-
- We'll save the current visible surface, let the window manager redraw any
- UI elements, and restore the SDL surface. This way, no expose event
- is required, and the deminiaturize works perfectly.
- */
- SDL_VideoDevice *this = (SDL_VideoDevice*)current_video;
-
- /* make sure pixels are fully opaque */
- if (! ( SDL_VideoSurface->flags & SDL_OPENGL ) )
- QZ_SetPortAlphaOpaque ();
-
- /* save current visible SDL surface */
- [ self cacheImageInRect:[ window_view frame ] ];
-
- /* let the window manager redraw controls, border, etc */
- [ super display ];
-
- /* restore visible SDL surface */
- [ self restoreCachedImage ];
-
- /* window is visible again */
- SDL_PrivateAppActive (1, SDL_APPACTIVE);
-}
-
-- (void)setFrame:(NSRect)frameRect display:(BOOL)flag
-{
-
- /*
- If the video surface is NULL, this originated from QZ_SetVideoMode,
- so don't send the resize event.
- */
- SDL_VideoDevice *this = (SDL_VideoDevice*)current_video;
-
- if (this && SDL_VideoSurface == NULL) {
-
- [ super setFrame:frameRect display:flag ];
- }
- else if (this && qz_window) {
-
- NSRect newViewFrame;
-
- [ super setFrame:frameRect display:flag ];
-
- newViewFrame = [ window_view frame ];
-
- SDL_PrivateResize (newViewFrame.size.width, newViewFrame.size.height);
-
- /* If not OpenGL, we have to update the pixels and pitch */
- if ( ! ( SDL_VideoSurface->flags & SDL_OPENGL ) ) {
-
- CGrafPtr thePort = [ window_view qdPort ];
- LockPortBits ( thePort );
-
- SDL_VideoSurface->pixels = GetPixBaseAddr ( GetPortPixMap ( thePort ) );
- SDL_VideoSurface->pitch = GetPixRowBytes ( GetPortPixMap ( thePort ) );
-
- /*
- SDL_VideoSurface->pixels now points to the window's pixels
- We want it to point to the *view's* pixels
- */
- {
- int vOffset = [ qz_window frame ].size.height -
- newViewFrame.size.height - newViewFrame.origin.y;
-
- int hOffset = newViewFrame.origin.x;
-
- SDL_VideoSurface->pixels = (Uint8 *)SDL_VideoSurface->pixels + (vOffset * SDL_VideoSurface->pitch) + hOffset * (device_bpp/8);
- }
-
- UnlockPortBits ( thePort );
- }
- }
-}
-
-- (void)appDidHide:(NSNotification*)note
-{
- SDL_PrivateAppActive (0, SDL_APPACTIVE);
-}
-
-- (void)appWillUnhide:(NSNotification*)note
-{
- SDL_VideoDevice *this = (SDL_VideoDevice*)current_video;
-
- if ( this ) {
-
- /* make sure pixels are fully opaque */
- if (! ( SDL_VideoSurface->flags & SDL_OPENGL ) )
- QZ_SetPortAlphaOpaque ();
-
- /* save current visible SDL surface */
- [ self cacheImageInRect:[ window_view frame ] ];
- }
-}
-
-- (void)appDidUnhide:(NSNotification*)note
-{
- /* restore cached image, since it may not be current, post expose event too */
- [ self restoreCachedImage ];
-
- /*SDL_PrivateExpose ();*/
-
- SDL_PrivateAppActive (1, SDL_APPACTIVE);
-}
-
-- (id)initWithContentRect:(NSRect)contentRect styleMask:(unsigned int)styleMask backing:(NSBackingStoreType)backingType defer:(BOOL)flag
-{
- /* Make our window subclass receive these application notifications */
- [ [ NSNotificationCenter defaultCenter ] addObserver:self
- selector:@selector(appDidHide:) name:NSApplicationDidHideNotification object:NSApp ];
-
- [ [ NSNotificationCenter defaultCenter ] addObserver:self
- selector:@selector(appDidUnhide:) name:NSApplicationDidUnhideNotification object:NSApp ];
-
- [ [ NSNotificationCenter defaultCenter ] addObserver:self
- selector:@selector(appWillUnhide:) name:NSApplicationWillUnhideNotification object:NSApp ];
-
- return [ super initWithContentRect:contentRect styleMask:styleMask backing:backingType defer:flag ];
-}
-
-@end
-
-@implementation SDL_QuartzWindowDelegate
-- (BOOL)windowShouldClose:(id)sender
-{
- SDL_PrivateQuit();
- return NO;
-}
-
-- (void)windowDidBecomeKey:(NSNotification *)aNotification
-{
- QZ_DoActivate (current_video);
-}
-
-- (void)windowDidResignKey:(NSNotification *)aNotification
-{
- QZ_DoDeactivate (current_video);
-}
-
-@end
-
-@implementation SDL_QuartzView
-
-- (void)resetCursorRects
-{
- SDL_Cursor *sdlc = SDL_GetCursor();
- if (sdlc != NULL && sdlc->wm_cursor != NULL) {
- [self addCursorRect: [self visibleRect] cursor: sdlc->wm_cursor->nscursor];
- }
-}
-
-@end