You've already forked linux-packaging-mono
Imported Upstream version 4.2.0.179
Former-commit-id: 0a113cb3a6feb7873f632839b1307cc6033cd595
This commit is contained in:
committed by
Jo Shields
parent
183bba2c9a
commit
6992685b86
@@ -0,0 +1,245 @@
|
||||
// Permission is hereby granted, free of charge, to any person obtaining
|
||||
// a copy of this software and associated documentation files (the
|
||||
// "Software"), to deal in the Software without restriction, including
|
||||
// without limitation the rights to use, copy, modify, merge, publish,
|
||||
// distribute, sublicense, and/or sell copies of the Software, and to
|
||||
// permit persons to whom the Software is furnished to do so, subject to
|
||||
// the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be
|
||||
// included in all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// Copyright (c) 2008 Novell, Inc.
|
||||
//
|
||||
// Authors:
|
||||
// Geoff Norton (gnorton@novell.com)
|
||||
//
|
||||
//
|
||||
|
||||
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace System.Windows.Forms.CarbonInternal {
|
||||
internal class Cursor {
|
||||
internal static CarbonCursor defcur = new CarbonCursor (StdCursor.Default);
|
||||
|
||||
internal static Bitmap DefineStdCursorBitmap (StdCursor id) {
|
||||
// FIXME
|
||||
return new Bitmap (16, 16);
|
||||
}
|
||||
internal static IntPtr DefineCursor (Bitmap bitmap, Bitmap mask, Color cursor_pixel, Color mask_pixel, int xHotSpot, int yHotSpot) {
|
||||
CarbonCursor cc = new CarbonCursor (bitmap, mask, cursor_pixel, mask_pixel, xHotSpot, yHotSpot);
|
||||
|
||||
return (IntPtr) GCHandle.Alloc (cc);
|
||||
}
|
||||
internal static IntPtr DefineStdCursor (StdCursor id) {
|
||||
CarbonCursor cc = new CarbonCursor (id);
|
||||
|
||||
return (IntPtr) GCHandle.Alloc (cc);
|
||||
}
|
||||
internal static void SetCursor (IntPtr cursor) {
|
||||
if (cursor == IntPtr.Zero) {
|
||||
defcur.SetCursor ();
|
||||
return;
|
||||
}
|
||||
|
||||
CarbonCursor cc = (CarbonCursor) ((GCHandle) cursor).Target;
|
||||
|
||||
cc.SetCursor ();
|
||||
}
|
||||
}
|
||||
|
||||
internal struct CarbonCursor {
|
||||
private Bitmap bmp;
|
||||
private Bitmap mask;
|
||||
private Color cursor_color;
|
||||
private Color mask_color;
|
||||
private int hot_x;
|
||||
private int hot_y;
|
||||
private StdCursor id;
|
||||
private bool standard;
|
||||
|
||||
public CarbonCursor (Bitmap bitmap, Bitmap mask, Color cursor_pixel, Color mask_pixel, int xHotSpot, int yHotSpot) {
|
||||
this.id = StdCursor.Default;
|
||||
this.bmp = bitmap;
|
||||
this.mask = mask;
|
||||
this.cursor_color = cursor_pixel;
|
||||
this.mask_color = mask_pixel;
|
||||
this.hot_x = xHotSpot;
|
||||
this.hot_y = yHotSpot;
|
||||
standard = true;
|
||||
}
|
||||
|
||||
public CarbonCursor (StdCursor id) {
|
||||
this.id = id;
|
||||
this.bmp = null;
|
||||
this.mask = null;
|
||||
this.cursor_color = Color.Black;
|
||||
this.mask_color = Color.Black;
|
||||
this.hot_x = 0;
|
||||
this.hot_y = 0;
|
||||
standard = true;
|
||||
}
|
||||
|
||||
public StdCursor StdCursor {
|
||||
get {
|
||||
return id;
|
||||
}
|
||||
}
|
||||
|
||||
public Bitmap Bitmap {
|
||||
get {
|
||||
return bmp;
|
||||
}
|
||||
}
|
||||
|
||||
public Bitmap Mask {
|
||||
get {
|
||||
return mask;
|
||||
}
|
||||
}
|
||||
|
||||
public Color CursorColor {
|
||||
get {
|
||||
return cursor_color;
|
||||
}
|
||||
}
|
||||
|
||||
public Color MaskColor {
|
||||
get {
|
||||
return mask_color;
|
||||
}
|
||||
}
|
||||
|
||||
public int HotSpotX {
|
||||
get {
|
||||
return hot_x;
|
||||
}
|
||||
}
|
||||
|
||||
public int HotSpotY {
|
||||
get {
|
||||
return hot_y;
|
||||
}
|
||||
}
|
||||
|
||||
public void SetCursor () {
|
||||
if (standard)
|
||||
SetStandardCursor ();
|
||||
else
|
||||
SetCustomCursor ();
|
||||
}
|
||||
|
||||
public void SetCustomCursor () {
|
||||
throw new NotImplementedException ("We dont support custom cursors yet");
|
||||
}
|
||||
|
||||
public void SetStandardCursor () {
|
||||
switch (id) {
|
||||
case StdCursor.AppStarting:
|
||||
SetThemeCursor (ThemeCursor.kThemeSpinningCursor);
|
||||
break;
|
||||
case StdCursor.Arrow:
|
||||
SetThemeCursor (ThemeCursor.kThemeArrowCursor);
|
||||
break;
|
||||
case StdCursor.Cross:
|
||||
SetThemeCursor (ThemeCursor.kThemeCrossCursor);
|
||||
break;
|
||||
case StdCursor.Default:
|
||||
SetThemeCursor (ThemeCursor.kThemeArrowCursor);
|
||||
break;
|
||||
case StdCursor.Hand:
|
||||
SetThemeCursor (ThemeCursor.kThemeOpenHandCursor);
|
||||
break;
|
||||
case StdCursor.Help:
|
||||
SetThemeCursor (ThemeCursor.kThemeArrowCursor);
|
||||
break;
|
||||
case StdCursor.HSplit:
|
||||
SetThemeCursor (ThemeCursor.kThemeResizeLeftRightCursor);
|
||||
break;
|
||||
case StdCursor.IBeam:
|
||||
SetThemeCursor (ThemeCursor.kThemeIBeamCursor);
|
||||
break;
|
||||
case StdCursor.No:
|
||||
SetThemeCursor (ThemeCursor.kThemeNotAllowedCursor);
|
||||
break;
|
||||
case StdCursor.NoMove2D:
|
||||
SetThemeCursor (ThemeCursor.kThemeNotAllowedCursor);
|
||||
break;
|
||||
case StdCursor.NoMoveHoriz:
|
||||
SetThemeCursor (ThemeCursor.kThemeNotAllowedCursor);
|
||||
break;
|
||||
case StdCursor.NoMoveVert:
|
||||
SetThemeCursor (ThemeCursor.kThemeNotAllowedCursor);
|
||||
break;
|
||||
case StdCursor.PanEast:
|
||||
SetThemeCursor (ThemeCursor.kThemeResizeRightCursor);
|
||||
break;
|
||||
case StdCursor.PanNE:
|
||||
SetThemeCursor (ThemeCursor.kThemeArrowCursor);
|
||||
break;
|
||||
case StdCursor.PanNorth:
|
||||
SetThemeCursor (ThemeCursor.kThemeArrowCursor);
|
||||
break;
|
||||
case StdCursor.PanNW:
|
||||
SetThemeCursor (ThemeCursor.kThemeArrowCursor);
|
||||
break;
|
||||
case StdCursor.PanSE:
|
||||
SetThemeCursor (ThemeCursor.kThemeArrowCursor);
|
||||
break;
|
||||
case StdCursor.PanSouth:
|
||||
SetThemeCursor (ThemeCursor.kThemeArrowCursor);
|
||||
break;
|
||||
case StdCursor.PanSW:
|
||||
SetThemeCursor (ThemeCursor.kThemeArrowCursor);
|
||||
break;
|
||||
case StdCursor.PanWest:
|
||||
SetThemeCursor (ThemeCursor.kThemeResizeLeftCursor);
|
||||
break;
|
||||
case StdCursor.SizeAll:
|
||||
SetThemeCursor (ThemeCursor.kThemeResizeLeftRightCursor);
|
||||
break;
|
||||
case StdCursor.SizeNESW:
|
||||
SetThemeCursor (ThemeCursor.kThemeArrowCursor);
|
||||
break;
|
||||
case StdCursor.SizeNS:
|
||||
SetThemeCursor (ThemeCursor.kThemeArrowCursor);
|
||||
break;
|
||||
case StdCursor.SizeNWSE:
|
||||
SetThemeCursor (ThemeCursor.kThemeArrowCursor);
|
||||
break;
|
||||
case StdCursor.SizeWE:
|
||||
SetThemeCursor (ThemeCursor.kThemeArrowCursor);
|
||||
break;
|
||||
case StdCursor.UpArrow:
|
||||
SetThemeCursor (ThemeCursor.kThemeArrowCursor);
|
||||
break;
|
||||
case StdCursor.VSplit:
|
||||
SetThemeCursor (ThemeCursor.kThemeArrowCursor);
|
||||
break;
|
||||
case StdCursor.WaitCursor:
|
||||
SetThemeCursor (ThemeCursor.kThemeSpinningCursor);
|
||||
break;
|
||||
default:
|
||||
SetThemeCursor (ThemeCursor.kThemeArrowCursor);
|
||||
break;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
[DllImport ("/System/Library/Frameworks/Carbon.framework/Versions/Current/Carbon")]
|
||||
static extern int SetThemeCursor (ThemeCursor cursor);
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user