[squeak-dev] The Trunk: Graphics-mt.378.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Jun 29 09:44:35 UTC 2017


Marcel Taeumel uploaded a new version of Graphics to project The Trunk:
http://source.squeak.org/trunk/Graphics-mt.378.mcz

==================== Summary ====================

Name: Graphics-mt.378
Author: mt
Time: 29 June 2017, 11:44:17.283967 am
UUID: 71536264-38ce-8e45-ad7e-12bb788bf319
Ancestors: Graphics-dtl.377, Graphics-cbc.375

Merges cbc.375
See http://forum.world.st/Updated-and-finished-removal-of-ExternalForm-and-related-classes-td4945675.html

=============== Diff against Graphics-dtl.377 ===============

Item was changed:
  DisplayMedium subclass: #Form
  	instanceVariableNames: 'bits width height depth offset'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'Graphics-Display Objects'!
  
+ !Form commentStamp: 'cbc 5/5/2017 10:07' prior: 0!
- !Form commentStamp: 'ls 1/4/2004 17:16' prior: 0!
  A rectangular array of pixels, used for holding images.  All pictures, including character images are Forms.  The depth of a Form is how many bits are used to specify the color at each pixel.  The actual bits are held in a Bitmap, whose internal structure is different at each depth.  Class Color allows you to deal with colors without knowing how they are actually encoded inside a Bitmap.
  	  The supported depths (in bits) are 1, 2, 4, 8, 16, and 32.  The number of actual colors at these depths are: 2, 4, 16, 256, 32768, and 16 million.
  	Forms are indexed starting at 0 instead of 1; thus, the top-left pixel of a Form has coordinates 0 at 0.
  	Forms are combined using BitBlt.  See the comment in class BitBlt.  Forms that repeat many times to fill a large destination are InfiniteForms.
  
  	colorAt: x at y		Returns the abstract Color at this location
  	displayAt: x at y		shows this form on the screen
  	displayOn: aMedium at: x at y	shows this form in a Window, a Form, or other DisplayMedium
  	fillColor: aColor		Set all the pixels to the color.
  	edit		launch an editor to change the bits of this form.
  	pixelValueAt: x at y	The encoded color.  The encoding depends on the depth.
+ 
+ Note: If you want to hook up other external forms/displayScreens, please look at the (successful) Graphics-External package in http://www.squeaksource.com/Balloon3D.!
- !

Item was changed:
  ----- Method: Form>>balancedPatternFor: (in category 'color mapping') -----
  balancedPatternFor: aColor
  	"Return the pixel word for representing the given color on the receiver"
+ 	^aColor balancedPatternForDepth: self depth!
- 	self hasNonStandardPalette
- 		ifTrue:[^self bitPatternFor: aColor]
- 		ifFalse:[^aColor balancedPatternForDepth: self depth]!

Item was changed:
  ----- Method: Form>>bitPatternFor: (in category 'color mapping') -----
  bitPatternFor: aColor
  	"Return the pixel word for representing the given color on the receiver"
+ 	^aColor bitPatternForDepth: self depth!
- 	aColor isColor ifFalse:[^aColor bitPatternForDepth: self depth].
- 	self hasNonStandardPalette
- 		ifTrue:[^Bitmap with: (self pixelWordFor: aColor)]
- 		ifFalse:[^aColor bitPatternForDepth: self depth]!

Item was changed:
  ----- Method: Form>>colormapFromARGB (in category 'color mapping') -----
  colormapFromARGB
  	"Return a ColorMap mapping from canonical ARGB space into the receiver.
  	Note: This version is optimized for Squeak forms."
  	| map nBits |
- 	self hasNonStandardPalette 
- 		ifTrue:[^ColorMap mappingFromARGB: self rgbaBitMasks].
  	self depth <= 8 ifTrue:[
  		map := Color colorMapIfNeededFrom: 32 to: self depth.
  		map size = 512 ifTrue:[nBits := 3].
  		map size = 4096 ifTrue:[nBits := 4].
  		map size = 32768 ifTrue:[nBits := 5].
  		^ColorMap
  			shifts: (Array 
  						with: 3 * nBits - 24
  						with: 2 * nBits - 16
  						with: 1 * nBits - 8
  						with: 0)
  			masks: (Array
  						with: (1 << nBits) - 1 << (24 - nBits)
  						with: (1 << nBits) - 1 << (16 - nBits)
  						with: (1 << nBits) - 1 << (8 - nBits)
  						with: 0)
  			colors: map].
  	self depth = 16 ifTrue:[
  		^ColorMap
  			shifts: #(-9 -6 -3 0)
  			masks: #(16rF80000 16rF800 16rF8 0)].
  	self depth = 32 ifTrue:[
  		^ColorMap
  			shifts: #(0 0 0 0)
  			masks: #(16rFF0000 16rFF00 16rFF 16rFF000000)].
  	self error:'Bad depth'!

Item was changed:
  ----- Method: Form>>colormapToARGB (in category 'color mapping') -----
  colormapToARGB
  	"Return a ColorMap mapping from the receiver into canonical ARGB space."
- 	self hasNonStandardPalette 
- 		ifTrue:[^self colormapFromARGB inverseMap].
  	self depth <= 8 ifTrue:[
  		^ColorMap
  			shifts: #(0 0 0 0)
  			masks: #(16rFF0000 16rFF00 16rFF 16rFF000000)
  			colors: (Color colorMapIfNeededFrom: self depth to: 32)].
  	self depth = 16 ifTrue:[
  		^ColorMap 
  			shifts: #( 9 6 3 0) 
  			masks: #(16r7C00 16r3E0 16r1F 0)].
  	self depth = 32 ifTrue:[
  		^ColorMap
  			shifts: #(0 0 0 0) 
  			masks: #(16rFF0000 16rFF00 16rFF 16rFF000000)].
  	self error:'Bad depth'!

Item was removed:
- ----- Method: Form>>displayScreen (in category 'accessing') -----
- displayScreen
- 	"Return the display screen the receiver is allocated on. 
- 	Forms in general are Squeak internal and not allocated on any particular display."
- 	^nil!

Item was removed:
- ----- Method: Form>>isBltAccelerated:for: (in category 'testing') -----
- isBltAccelerated: ruleInteger for: sourceForm
- 	"Return true if the receiver can perform accelerated blts operations by itself"
- 	^false!

Item was removed:
- ----- Method: Form>>isExternalForm (in category 'testing') -----
- isExternalForm
- 	^false!

Item was removed:
- ----- Method: Form>>isFillAccelerated:for: (in category 'testing') -----
- isFillAccelerated: ruleInteger for: aColor
- 	"Return true if the receiver can perform accelerated fill operations by itself"
- 	^false!

Item was changed:
  ----- Method: Form>>pixelValueFor: (in category 'color mapping') -----
  pixelValueFor: aColor
  	"Return the pixel word for representing the given color on the receiver"
+ 	^aColor pixelValueForDepth: self depth!
- 	self hasNonStandardPalette
- 		ifTrue:[^self colormapFromARGB mapPixel: (aColor pixelValueForDepth: 32)]
- 		ifFalse:[^aColor pixelValueForDepth: self depth]!

Item was changed:
  ----- Method: Form>>pixelWordFor: (in category 'color mapping') -----
  pixelWordFor: aColor
  	"Return the pixel word for representing the given color on the receiver"
+ 	^aColor pixelWordForDepth: self depth!
- 	| basicPattern |
- 	self hasNonStandardPalette 
- 		ifFalse:[^aColor pixelWordForDepth: self depth].
- 	basicPattern := self pixelValueFor: aColor.
- 	self depth = 32 
- 		ifTrue:[^basicPattern]
- 		ifFalse:[^aColor pixelWordFor: self depth filledWith: basicPattern]!



More information about the Squeak-dev mailing list