[squeak-dev] The Trunk: MorphicExtras-tfel.172.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Apr 20 12:25:49 UTC 2016


Tim Felgentreff uploaded a new version of MorphicExtras to project The Trunk:
http://source.squeak.org/trunk/MorphicExtras-tfel.172.mcz

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

Name: MorphicExtras-tfel.172
Author: tfel
Time: 20 April 2016, 2:25:18.788021 pm
UUID: cd9fb2c0-84a9-ee4c-a244-98522b2ac822
Ancestors: MorphicExtras-mt.171

make postscript printing work again with current default fonts

=============== Diff against MorphicExtras-mt.171 ===============

Item was added:
+ ----- Method: PostscriptCanvas class>>fontsForDejaVuSans (in category 'font mapping') -----
+ fontsForDejaVuSans
+ 
+ 	| d |
+ 
+ 	"Bold = 1, Ital = 2, Under = 4, Narrow = 8, Struckout = 16"
+ 	d := Dictionary new.
+ 	d
+ 		at: 0 put: #('Helvetica-Bold' 1.0);
+ 		at: 1 put: #('Helvetica-Bold' 1.0);
+ 		at: 2 put: #('Helvetica-Oblique' 1.0);
+ 		at: 3 put: #('Helvetica-BoldOblique' 1.0).
+ 	^d!

Item was changed:
  ----- Method: PostscriptCanvas class>>initializeFontMap (in category 'font mapping') -----
  initializeFontMap
  	"Initialize the dictionary mapping font names to substitutions for Postscript code generation."
  	"PostscriptCanvas initializeFontMap"
  	| f |
  	FontMap := Dictionary new.
  	FontMap
  		at: 'NewYork' put: (f := self fontsForNewYork);
  		at: 'Accuny' put: f;
  
  		at: 'Helvetica' put: (f := self fontsForHelvetica);
  		at: 'Accujen' put: f;
  				
  		at: 'Palatino' put: self fontsForPalatino;
  		
  		at: 'ComicBold' put: (f := self fontsForComicBold);
  		at: 'Accuat' put: self fontsForAccuAt;
  		
+ 		at: 'Bitmap DejaVu Sans' put: self fontsForDejaVuSans;
+ 		
  		at: 'ComicPlain' put: self fontsForComicPlain!

Item was changed:
  ----- Method: PostscriptCanvas class>>postscriptFontInfoForFont: (in category 'font mapping') -----
  postscriptFontInfoForFont: font
  
  	| decoded decodedName keys match fontName |
  
  	fontName := font textStyleName asString.
  	decoded := TextStyle decodeStyleName: fontName.
  	decodedName := decoded second.
  	keys := self fontMap keys asArray sort: [ :a :b | a size > b size ].
- 
  	match := keys select: [ :k | decoded first = k or: [ fontName = k ] ].
  	match do: [ :key | | subD desired mask |
  		subD := self fontMap at: key.
  		desired := font emphasis.
  		mask := 31.
  		[
  			desired := desired bitAnd: mask.
  			subD at: desired ifPresent: [ :answer | ^answer].
  			mask := mask bitShift: -1.
  			desired > 0
  		] whileTrue.
  	].
  
  	"No explicit lookup found; try to convert the style name into the canonical Postscript name.
  	This name will probably still be wrong."
  
  	fontName := String streamContents: [ :s |
  		s nextPutAll: decodedName.
  		decoded third do: [ :nm | s nextPut: $-; nextPutAll: nm ].
  
  		(font emphasis = 0 and: [ (decoded last includes: 0) not ])
  			ifTrue: [ s nextPutAll:  '-Regular' ].
  
  		(font emphasis = 1 and: [ (decoded first anyMask: 1) not ])
  			ifTrue: [ s nextPutAll:  '-Bold' ].
  
  		(font emphasis = 2 and: [ (decoded first anyMask: 2) not ])
  			ifTrue: [ s nextPutAll:  '-Italic' ].
  
  		(font emphasis = 3 and: [ (decoded first anyMask: 3) not ])
  			ifTrue: [ s nextPutAll:  '-BoldItalic' ].
  	].
  
+ 	^ {'(', fontName, ') cvn'. 1.0}
- 	^ {fontName. 1.0}
  !

Item was changed:
  ----- Method: PostscriptCanvas>>image:at:sourceRect:rule: (in category 'private') -----
+ image: form at: aPoint sourceRect: sourceRect rule: rule 
+ 	| aForm |
- image: aForm at: aPoint sourceRect: sourceRect rule: rule 
  	self preserveStateDuring:
  		[:inner | inner translate: aPoint + self origin.
+ 		aForm := form depth <= 8 ifTrue: [form asFormOfDepth: 32] ifFalse: [form].
+ 		target write: ((aForm colorsUsed includes: Color transparent)
+ 			ifTrue: [| top f2 c2 offset |
+ 				"tfel: This was taken from SketchMorph, but is actually needed for all 
+ 				forms that use transparency"
+ 				offset := currentTransformation ifNil: [0 at 0] ifNotNilDo: [:t | t offset].
+ 				top := self topLevelMorph.
+ 				f2 := Form extent: aForm extent depth: self depth.
+ 				c2 := f2 getCanvas.
+ 				c2 fillColor: Color white.
+ 				c2
+ 					translateBy: offset - self origin - aPoint
+ 					clippingTo: f2 boundingBox
+ 					during: [:c | top fullDrawOn: c].
+ 				f2]
+ 			ifFalse: [aForm])].
- 		target write: aForm]
  !

Item was removed:
- ----- Method: SketchMorph>>drawPostscriptOn: (in category '*MorphicExtras-*morphic-Postscript Canvases') -----
- drawPostscriptOn: aCanvas
- 
- 	| top f2 c2 tfx clrs |
- 
- 	tfx := self transformFrom: self world.
- 	tfx angle = 0.0 ifFalse: [^super drawPostscriptOn: aCanvas].	"can't do rotated yet"
- 	clrs := self rotatedForm colorsUsed.
- 	(clrs includes: Color transparent) 
- 		ifFalse: [^super drawPostscriptOn: aCanvas].		"no need for this, then"
- 
- "Smalltalk at: #Q put: OrderedCollection new"
- "Q add: {self. tfx. clrs}."
- "(self hasProperty: #BOB) ifTrue: [self halt]."
- 
- 	top := aCanvas topLevelMorph.
- 	f2 := Form extent: self extent depth: self rotatedForm depth.
- 	c2 := f2 getCanvas.
- 	c2 fillColor: Color white.
- 	c2 translateBy: bounds origin negated clippingTo: f2 boundingBox during: [ :c |
- 		top fullDrawOn: c
- 	].
- 	aCanvas paintImage: f2 at: bounds origin
- 
- !



More information about the Squeak-dev mailing list