'From etoys4.0 of 9 October 2008 [latest update: #2247] on 17 August 2009 at 1:16:56 pm'! "Change Set: fixCursor-bf Date: 17 August 2009 Author: Bert Freudenberg On the Mac, the cursor looks jagged. Its alpha was not pre-multiplied. Also, it had a bluish tint. Postscript initializes new cursor."! !Form methodsFor: 'other' stamp: 'bf 8/17/2009 13:08'! preMultiplyAlpha "Pre-multiply each pixel by its alpha, for proper alpha compositing (BitBlt rule 34). E.g., half-transparent green 16r7F00FF00 becomes 16r7F007F00" depth = 32 ifFalse: [^self]. 1 to: bits size do: [:i | | v a r g b | v := bits at: i. a := v bitShift: -24. r := ((v bitShift: -16) bitAnd: 255) * a // 255. g := ((v bitShift: -8) bitAnd: 255) * a // 255. b := (v bitAnd: 255) * a // 255. bits at: i put: (a bitShift: 24) + (r bitShift: 16) + (g bitShift: 8) + b].! ! !CursorWithAlpha class methodsFor: 'constants' stamp: 'bf 8/17/2009 12:55'! biggerNormal "self biggerNormal show" "(Base64MimeConverter mimeEncode: ((FileStream readOnlyFileNamed: 'EtoysCursor.png') binary)) upToEnd" ^self constants at: #biggerNormal ifAbsentPut: [ | form cursor | form := (PNGReadWriter on: (Base64MimeConverter mimeDecodeToBytes: 'iVBORw0KGgoAAAANSUhEUgAAABsAAAArCAYAAACJrvP4AAAACXBIWXMAAAsTAAALEwEAmpwY AAAEF0lEQVRYCb2XS0hcVxjHj2/G8ZWMQQbSGO2iRhERwRALBmJNoOOqwUXtYtxOTQJxI8SN CyXJqggVEghusrAuBB8IddUWF64CvnCj+AJrsYKio6JJOPn/j+dc5s6MztyZMR/857v3PL7f /c4595w7QmiTUvrN9ZV7wGhfB3jOunpgOoYtPQQm19fXn6DsulY2PJUSi4ARvLm5+SuiE5hS mAsBXSYzv99vLuXExMRL1H2jlRKoDYbAMhS4uLj4PJUwN4K5TTqEhQPHxsZeayCzTCrDqLC0 tLQryTAqjNmFA1OR4YWwaMBk5/BSWDRgMhnGhEUDJpphXDACqdDXIpEMHcHCF43TDB3Bks0w IVj4kMabYcKwcGA8c+gIlp2drRaKGc5wYKwMHcFycnIiYOHACzLkhi9SAgsHRsnQOSzaMBJk FPoejo6OvkJ5iZY67R1lZoJe5kOBKysrzxzBCgoKrCcnpKysTO7v75sjMKafmZl5gX6uNPww M4EeQXrsEAJDJc7Ozngr8vPzRVVVldjZ2RGrq6uqrLi4WPT394u2tjZxeHj4P8C7qiLkJzMz 8zNvc3NzT+jR/yl9xDBmZWWpTAoLC2V9fb3c29uTXV1dtuwaGxtVRgcHBzuI0QY91vLBUw+0 voOnXPyyijBEUWWVlZViampKFBUVCcyDKC8vt9pitYnp6WlmfqO7u/uOVRHjIiKzjIwM2dDQ oDIKnZCWlhZbdoFAQFUvLCz8Bcb3WrfgqWItFR/XKrEIWG1trQWam5v7Z3Bw8C2jjoyMyNLS UgvIYeYQ05A5h5HA+GE1NTVWgPn5+b/RubWiosJ/enoaZNDq6moLhjrZ19fHYjk7O/sO9/eg G1oZ8JTNbJmZJ9Wgn9GyleJQMWhPT48NhnllsTw+Pv4X7WLCuI1YX8TsuLy8/CfKmrXuwt9t b2//iXX4LJder9cCut1uOT4+zio5PDz8G9pWaqm4uLaZDaZBXLY2GO4bdnd3PzAowDZYc3Mz i+X29vY82l0K4ypR/2JOTk7e49qsIuMLUEbdXFpaes6gk5OT0uPxWECeBGtra6ySvb29v6Bt ve7DfjZTsKOjo99RyvkzEOMtGOpuBoPBbQblQsK9Ejfnzs5OFsuNjY0JlF8IQ11clodWeVgo bxh0YGDABmOmNGxzh2j3EPJqRV2VqLvUFKyjo+NHBuWqxb4nS0pKVFZmGFG+gihJw8wTerHx /kEgXng6y7a2thYxnAHAHkHfavEcoxyZBcOh+AOHixS+7HwnfT4f/6nynSQoaZh5MjWcTU1N 94aGhtrr6up8qLgPcVFQd7SuwVPmIdN5njk1wmi31a8QHu3VuYVrLhDaf+dOHGgvE4Gp3RsB cnUQMx+f9P1H7c9PXyHUIcoy01HXX637AibwgHAnFRPGAAAAAElFTkSuQmCC' readStream) readStream) nextImage. cursor := CursorWithAlpha extent: form extent depth: 32. form displayOn: cursor. cursor offset: -2@-1. cursor preMultiplyAlpha. cursor]! ! !CursorWithAlpha class methodsFor: 'constants' stamp: 'bf 8/17/2009 12:56'! resetConstants Constants := nil. ! ! !Cursor class methodsFor: 'constants' stamp: 'bf 8/17/2009 12:55'! normal "Answer the instance of me that is the shape of an arrow slanted left." ^Preferences biggerCursors ifTrue: [CursorWithAlpha biggerNormal] ifFalse: [NormalCursor]! ! CursorWithAlpha class removeSelector: #olpcNormal! "Postscript:" CursorWithAlpha resetConstants. Cursor wait show. Cursor normal show!