| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2008 The Chromium Authors. All rights reserved. Use of this | |
| 2 // source code is governed by a BSD-style license that can be found in the | |
| 3 // LICENSE file. | |
| 4 | |
| 5 #include "config.h" | |
| 6 | |
| 7 #include "webkit/glue/webkit_glue.h" | |
| 8 | |
| 9 #import <AppKit/AppKit.h> | |
| 10 | |
| 11 #include "webkit/glue/screen_info.h" | |
| 12 | |
| 13 namespace webkit_glue { | |
| 14 | |
| 15 static NSScreen *ScreenForWindow(NSWindow *window) { | |
| 16 NSScreen *screen = [window screen]; // nil if the window is off-screen | |
| 17 if (screen) | |
| 18 return screen; | |
| 19 | |
| 20 NSArray *screens = [NSScreen screens]; | |
| 21 if ([screens count] > 0) | |
| 22 return [screens objectAtIndex:0]; // screen containing the menubar | |
| 23 | |
| 24 return nil; | |
| 25 } | |
| 26 | |
| 27 static gfx::Rect ToUserSpace(const NSRect& rect, NSWindow *destination) { | |
| 28 CGRect user_rect = NSRectToCGRect(rect); | |
| 29 | |
| 30 user_rect.origin.y = | |
| 31 NSMaxY([ScreenForWindow(destination) frame]) - | |
| 32 (user_rect.origin.y + user_rect.size.height); // flip | |
| 33 | |
| 34 if (destination) { | |
| 35 CGFloat scale = 1 / [destination userSpaceScaleFactor]; // scale down | |
| 36 user_rect.origin.x *= scale; | |
| 37 user_rect.origin.y *= scale; | |
| 38 user_rect.size.width *= scale; | |
| 39 user_rect.size.height *= scale; | |
| 40 } | |
| 41 | |
| 42 return gfx::Rect(user_rect); | |
| 43 } | |
| 44 | |
| 45 ScreenInfo GetScreenInfoHelper(gfx::NativeView view) { | |
| 46 NSString *color_space = NSColorSpaceFromDepth([[NSScreen deepestScreen] depth]
); | |
| 47 bool monochrome = color_space == NSCalibratedWhiteColorSpace || | |
| 48 color_space == NSCalibratedBlackColorSpace || | |
| 49 color_space == NSDeviceWhiteColorSpace || | |
| 50 color_space == NSDeviceBlackColorSpace; | |
| 51 | |
| 52 ScreenInfo results; | |
| 53 results.depth = | |
| 54 NSBitsPerPixelFromDepth([[NSScreen deepestScreen] depth]); | |
| 55 results.depth_per_component = | |
| 56 NSBitsPerSampleFromDepth([[NSScreen deepestScreen] depth]); | |
| 57 results.is_monochrome = | |
| 58 color_space == NSCalibratedWhiteColorSpace || | |
| 59 color_space == NSCalibratedBlackColorSpace || | |
| 60 color_space == NSDeviceWhiteColorSpace || | |
| 61 color_space == NSDeviceBlackColorSpace; | |
| 62 results.rect = | |
| 63 ToUserSpace([ScreenForWindow([view window]) frame], [view window]); | |
| 64 results.available_rect = | |
| 65 ToUserSpace([ScreenForWindow([view window]) visibleFrame], [view window]); | |
| 66 return results; | |
| 67 } | |
| 68 | |
| 69 } // namespace webkit_glue | |
| OLD | NEW |