[Bf-blender-cvs] [387fe3607da] master: UI: Add high quality cursors on macOS

William Reynish noreply at git.blender.org
Fri Sep 27 20:41:27 CEST 2019


Commit: 387fe3607da865e8cd4392e214f9e85d99f48d36
Author: William Reynish
Date:   Fri Sep 27 20:41:22 2019 +0200
Branches: master
https://developer.blender.org/rB387fe3607da865e8cd4392e214f9e85d99f48d36

UI: Add high quality cursors on macOS

This adds the same high quality cursors on macOS as we have on Windows.

These are stored as 32*32 pt PDFs, same as the built-in OS cursors

Reviewed by: Brecht Van Lommel

Differential Revision: https://developer.blender.org/D5907

===================================================================

M	intern/ghost/intern/GHOST_WindowCocoa.mm
A	release/darwin/Blender.app/Contents/Resources/arrowdown.pdf
A	release/darwin/Blender.app/Contents/Resources/arrowleft.pdf
A	release/darwin/Blender.app/Contents/Resources/arrowright.pdf
A	release/darwin/Blender.app/Contents/Resources/arrowup.pdf
A	release/darwin/Blender.app/Contents/Resources/crossa.pdf
A	release/darwin/Blender.app/Contents/Resources/crossb.pdf
A	release/darwin/Blender.app/Contents/Resources/crossc.pdf
A	release/darwin/Blender.app/Contents/Resources/eraser.pdf
A	release/darwin/Blender.app/Contents/Resources/eyedropper.pdf
A	release/darwin/Blender.app/Contents/Resources/knife.pdf
A	release/darwin/Blender.app/Contents/Resources/pen.pdf
A	release/darwin/Blender.app/Contents/Resources/scrollew.pdf
A	release/darwin/Blender.app/Contents/Resources/scrollns.pdf
A	release/darwin/Blender.app/Contents/Resources/scrollnsew.pdf
A	release/darwin/Blender.app/Contents/Resources/splith.pdf
A	release/darwin/Blender.app/Contents/Resources/splitv.pdf
A	release/darwin/Blender.app/Contents/Resources/zoomin.pdf
A	release/darwin/Blender.app/Contents/Resources/zoomout.pdf

===================================================================

diff --git a/intern/ghost/intern/GHOST_WindowCocoa.mm b/intern/ghost/intern/GHOST_WindowCocoa.mm
index dff45ba85fb..1e0952c3bd6 100644
--- a/intern/ghost/intern/GHOST_WindowCocoa.mm
+++ b/intern/ghost/intern/GHOST_WindowCocoa.mm
@@ -925,6 +925,27 @@ GHOST_TSuccess GHOST_WindowCocoa::endProgressBar()
 
 #pragma mark Cursor handling
 
+static NSCursor *getImageCursor(GHOST_TStandardCursor shape, NSString *name, NSPoint hotspot)
+{
+  static NSCursor *cursors[(int)GHOST_kStandardCursorNumCursors] = {0};
+  static bool loaded[(int)GHOST_kStandardCursorNumCursors] = {false};
+
+  const int index = (int)shape;
+  if (!loaded[index]) {
+    /* Load image from file in application Resources folder. */
+    @autoreleasepool {
+      NSImage *image = [NSImage imageNamed:name];
+      if (image != NULL) {
+        cursors[index] = [[NSCursor alloc] initWithImage:image hotSpot:hotspot];
+      }
+    }
+
+    loaded[index] = true;
+  }
+
+  return cursors[index];
+}
+
 NSCursor *GHOST_WindowCocoa::getStandardCursor(GHOST_TStandardCursor shape) const
 {
   switch (shape) {
@@ -942,10 +963,8 @@ NSCursor *GHOST_WindowCocoa::getStandardCursor(GHOST_TStandardCursor shape) cons
     case GHOST_kStandardCursorCrosshair:
       return [NSCursor crosshairCursor];
     case GHOST_kStandardCursorUpDown:
-    case GHOST_kStandardCursorHorizontalSplit:
       return [NSCursor resizeUpDownCursor];
     case GHOST_kStandardCursorLeftRight:
-    case GHOST_kStandardCursorVerticalSplit:
       return [NSCursor resizeLeftRightCursor];
     case GHOST_kStandardCursorTopSide:
       return [NSCursor resizeUpCursor];
@@ -963,6 +982,42 @@ NSCursor *GHOST_WindowCocoa::getStandardCursor(GHOST_TStandardCursor shape) cons
       return [NSCursor pointingHandCursor];
     case GHOST_kStandardCursorDefault:
       return [NSCursor arrowCursor];
+    case GHOST_kStandardCursorKnife:
+      return getImageCursor(shape, @"knife.pdf", NSMakePoint(6, 24));
+    case GHOST_kStandardCursorEraser:
+      return getImageCursor(shape, @"eraser.pdf", NSMakePoint(6, 24));
+    case GHOST_kStandardCursorPencil:
+      return getImageCursor(shape, @"pen.pdf", NSMakePoint(6, 24));
+    case GHOST_kStandardCursorEyedropper:
+      return getImageCursor(shape, @"eyedropper.pdf", NSMakePoint(6, 24));
+    case GHOST_kStandardCursorZoomIn:
+      return getImageCursor(shape, @"zoomin.pdf", NSMakePoint(8, 7));
+    case GHOST_kStandardCursorZoomOut:
+      return getImageCursor(shape, @"zoomout.pdf", NSMakePoint(8, 7));
+    case GHOST_kStandardCursorNSEWScroll:
+      return getImageCursor(shape, @"scrollnsew.pdf", NSMakePoint(16, 16));
+    case GHOST_kStandardCursorNSScroll:
+      return getImageCursor(shape, @"scrollns.pdf", NSMakePoint(16, 16));
+    case GHOST_kStandardCursorEWScroll:
+      return getImageCursor(shape, @"scrollew.pdf", NSMakePoint(16, 16));
+    case GHOST_kStandardCursorUpArrow:
+      return getImageCursor(shape, @"arrowup.pdf", NSMakePoint(16, 16));
+    case GHOST_kStandardCursorDownArrow:
+      return getImageCursor(shape, @"arrowdown.pdf", NSMakePoint(16, 16));
+    case GHOST_kStandardCursorLeftArrow:
+      return getImageCursor(shape, @"arrowleft.pdf", NSMakePoint(16, 16));
+    case GHOST_kStandardCursorRightArrow:
+      return getImageCursor(shape, @"arrowright.pdf", NSMakePoint(16, 16));
+    case GHOST_kStandardCursorVerticalSplit:
+      return getImageCursor(shape, @"splitv.pdf", NSMakePoint(16, 16));
+    case GHOST_kStandardCursorHorizontalSplit:
+      return getImageCursor(shape, @"splith.pdf", NSMakePoint(16, 16));
+    case GHOST_kStandardCursorCrosshairA:
+      return getImageCursor(shape, @"crossa.pdf", NSMakePoint(16, 16));
+    case GHOST_kStandardCursorCrosshairB:
+      return getImageCursor(shape, @"crossb.pdf", NSMakePoint(16, 16));
+    case GHOST_kStandardCursorCrosshairC:
+      return getImageCursor(shape, @"crossc.pdf", NSMakePoint(16, 16));
     default:
       return NULL;
   }
diff --git a/release/darwin/Blender.app/Contents/Resources/arrowdown.pdf b/release/darwin/Blender.app/Contents/Resources/arrowdown.pdf
new file mode 100644
index 00000000000..8a262b21010
Binary files /dev/null and b/release/darwin/Blender.app/Contents/Resources/arrowdown.pdf differ
diff --git a/release/darwin/Blender.app/Contents/Resources/arrowleft.pdf b/release/darwin/Blender.app/Contents/Resources/arrowleft.pdf
new file mode 100644
index 00000000000..1ca740b6d70
Binary files /dev/null and b/release/darwin/Blender.app/Contents/Resources/arrowleft.pdf differ
diff --git a/release/darwin/Blender.app/Contents/Resources/arrowright.pdf b/release/darwin/Blender.app/Contents/Resources/arrowright.pdf
new file mode 100644
index 00000000000..c8c657f02a0
Binary files /dev/null and b/release/darwin/Blender.app/Contents/Resources/arrowright.pdf differ
diff --git a/release/darwin/Blender.app/Contents/Resources/arrowup.pdf b/release/darwin/Blender.app/Contents/Resources/arrowup.pdf
new file mode 100644
index 00000000000..2a74e8b293e
Binary files /dev/null and b/release/darwin/Blender.app/Contents/Resources/arrowup.pdf differ
diff --git a/release/darwin/Blender.app/Contents/Resources/crossa.pdf b/release/darwin/Blender.app/Contents/Resources/crossa.pdf
new file mode 100644
index 00000000000..6419d10f276
Binary files /dev/null and b/release/darwin/Blender.app/Contents/Resources/crossa.pdf differ
diff --git a/release/darwin/Blender.app/Contents/Resources/crossb.pdf b/release/darwin/Blender.app/Contents/Resources/crossb.pdf
new file mode 100644
index 00000000000..7cbc0a8bdc0
Binary files /dev/null and b/release/darwin/Blender.app/Contents/Resources/crossb.pdf differ
diff --git a/release/darwin/Blender.app/Contents/Resources/crossc.pdf b/release/darwin/Blender.app/Contents/Resources/crossc.pdf
new file mode 100644
index 00000000000..a6bb7a4ef01
Binary files /dev/null and b/release/darwin/Blender.app/Contents/Resources/crossc.pdf differ
diff --git a/release/darwin/Blender.app/Contents/Resources/eraser.pdf b/release/darwin/Blender.app/Contents/Resources/eraser.pdf
new file mode 100644
index 00000000000..5a56be7006b
Binary files /dev/null and b/release/darwin/Blender.app/Contents/Resources/eraser.pdf differ
diff --git a/release/darwin/Blender.app/Contents/Resources/eyedropper.pdf b/release/darwin/Blender.app/Contents/Resources/eyedropper.pdf
new file mode 100644
index 00000000000..59b9fa936df
Binary files /dev/null and b/release/darwin/Blender.app/Contents/Resources/eyedropper.pdf differ
diff --git a/release/darwin/Blender.app/Contents/Resources/knife.pdf b/release/darwin/Blender.app/Contents/Resources/knife.pdf
new file mode 100644
index 00000000000..da4d48cde10
Binary files /dev/null and b/release/darwin/Blender.app/Contents/Resources/knife.pdf differ
diff --git a/release/darwin/Blender.app/Contents/Resources/pen.pdf b/release/darwin/Blender.app/Contents/Resources/pen.pdf
new file mode 100644
index 00000000000..d98f9ee9c89
Binary files /dev/null and b/release/darwin/Blender.app/Contents/Resources/pen.pdf differ
diff --git a/release/darwin/Blender.app/Contents/Resources/scrollew.pdf b/release/darwin/Blender.app/Contents/Resources/scrollew.pdf
new file mode 100644
index 00000000000..35db18830e8
Binary files /dev/null and b/release/darwin/Blender.app/Contents/Resources/scrollew.pdf differ
diff --git a/release/darwin/Blender.app/Contents/Resources/scrollns.pdf b/release/darwin/Blender.app/Contents/Resources/scrollns.pdf
new file mode 100644
index 00000000000..b4046290d50
Binary files /dev/null and b/release/darwin/Blender.app/Contents/Resources/scrollns.pdf differ
diff --git a/release/darwin/Blender.app/Contents/Resources/scrollnsew.pdf b/release/darwin/Blender.app/Contents/Resources/scrollnsew.pdf
new file mode 100644
index 00000000000..f8c666b5347
Binary files /dev/null and b/release/darwin/Blender.app/Contents/Resources/scrollnsew.pdf differ
diff --git a/release/darwin/Blender.app/Contents/Resources/splith.pdf b/release/darwin/Blender.app/Contents/Resources/splith.pdf
new file mode 100644
index 00000000000..03265fd18aa
Binary files /dev/null and b/release/darwin/Blender.app/Contents/Resources/splith.pdf differ
diff --git a/release/darwin/Blender.app/Contents/Resources/splitv.pdf b/release/darwin/Blender.app/Contents/Resources/splitv.pdf
new file mode 100644
index 00000000000..95774f9c17d
Binary files /dev/null and b/release/darwin/Blender.app/Contents/Resources/splitv.pdf differ
diff --git a/release/darwin/Blender.app/Contents/Resources/zoomin.pdf b/release/darwin/Blender.app/Contents/Resources/zoomin.pdf
new file mode 100644
index 00000000000..da20349c1aa
--- /dev/null
+++ b/release/darwin/Blender.app/Contents/Resources/zoomin.pdf
@@ -0,0 +1,674 @@
+%PDF-1.5
%����
+1 0 obj
<</Metadata 2 0 R/Pages 3 0 R/Type/Catalog>>
endobj
2 0 obj
<</Length 48624/Subtype/XML/Type/Metadata>>stream
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:05:41        ">
+   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+      <rdf:Description rdf:about=""
+            xmlns:dc="http://purl.org/dc/elements/1.1/">
+         <dc:format>application/pdf</dc:format>
+         <dc:title>
+            <rdf:Alt>
+               <rdf:li xml:lang="x-default">ZoominCursor</rdf:li>
+            </rdf:Alt>
+         </dc:title>
+      </rdf:Description>
+      <rdf:Description rdf:about=""
+            xmlns:xmp="http://ns.adobe.com/xap/1.0/"
+            xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/">
+         <xmp:CreatorTool>Adobe Illustrator CS4</xmp:CreatorTool>
+         <xmp:CreateDate>2011-08-25T16:21:20-07:00</xmp:CreateDate>
+         <xmp:ModifyDate>2011-08-25T16:21:20-07:00</xmp:ModifyDate>
+         <xmp:MetadataDate>2011-08-25T16:21:20-07:00</xmp:MetadataDate>
+         <xmp:Thumbnails>
+            <rdf:Alt>
+               <rdf:li rdf:parseType="Resource">
+                  <xmpGImg:width>256</xmpGImg:width>
+                  <xmpGImg:height>256</xmpGImg:height>
+                  <xmpGImg:format>JPEG</xmpGImg:format>
+                  <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFB

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list