The Trunk: Graphics-nice.224.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Graphics-nice.224.mcz

commits-2
Nicolas Cellier uploaded a new version of Graphics to project The Trunk:
http://source.squeak.org/trunk/Graphics-nice.224.mcz

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

Name: Graphics-nice.224
Author: nice
Time: 4 September 2013, 10:11:17.858 pm
UUID: 9a7bbc80-ea53-4fb7-a793-274be1ed108f
Ancestors: Graphics-ul.223

1) remove #canComputDefaultLineHeight it has a brother with a e after comput which is sent.
2) avoid 'a litral string' asSymbol, #'a literal symbol' is the syntax.
3) Transform this construct into something not less understandable:
    [ doSomeLoop.
        testStopCondition ifTrue: [^something] ] repeat
=>
    [ doSomeLoop.
        testStopCondition ] whileFalse.

        ^something

=============== Diff against Graphics-ul.223 ===============

Item was changed:
  ----- Method: BDFFontReader>>read (in category 'reading') -----
  read
  | xTable strikeWidth glyphs ascent descent minAscii maxAscii maxWidth chars charsNum height form encoding bbx array width blt lastAscii pointSize ret stream |
  form := encoding := bbx := nil.
  self readAttributes.
  height := Integer readFromString: ((properties at: #FONTBOUNDINGBOX) at: 2).
+ ascent := Integer readFromString: (properties at: #'FONT_ASCENT') first.
+ descent := Integer readFromString: (properties at: #'FONT_DESCENT') first.
+ pointSize := (Integer readFromString: (properties at: #'POINT_SIZE') first) // 10.
- ascent := Integer readFromString: (properties at: 'FONT_ASCENT' asSymbol) first.
- descent := Integer readFromString: (properties at: 'FONT_DESCENT' asSymbol) first.
- pointSize := (Integer readFromString: (properties at: 'POINT_SIZE' asSymbol) first) // 10.
 
  maxWidth := 0.
  minAscii := 9999.
  strikeWidth := 0.
  maxAscii := 0.
 
  charsNum := Integer readFromString: (properties at: #CHARS) first.
  chars := Set new: charsNum.
 
  1 to: charsNum do: [:i |
  array := self readOneCharacter.
  stream := ReadStream on: array.
  form := stream next.
  encoding := stream next.
  bbx := stream next.
  form ifNotNil: [
  width := bbx at: 1.
  maxWidth := maxWidth max: width.
  minAscii := minAscii min: encoding.
  maxAscii := maxAscii max: encoding.
  strikeWidth := strikeWidth + width.
  chars add: array.
  ].
  ].
 
  chars := chars asSortedCollection: [:x :y | (x at: 2) <= (y at: 2)].
  charsNum := chars size. "undefined encodings make this different"
 
  charsNum > 256 ifTrue: [
  "it should be 94x94 charset, and should be fixed width font"
  strikeWidth := 94*94*maxWidth.
  maxAscii := 94*94.
  minAscii := 0.
  xTable := XTableForFixedFont new.
  xTable maxAscii: 94*94.
  xTable width: maxWidth.
  ] ifFalse: [
  xTable := (Array new: 258) atAllPut: 0.
  ].
 
  glyphs := Form extent: strikeWidth@height.
  blt := BitBlt toForm: glyphs.
  lastAscii := 0.
 
  charsNum > 256 ifTrue: [
  1 to: charsNum do: [:i |
  stream := ReadStream on: (chars at: i).
  form := stream next.
  encoding := stream next.
  bbx := stream next.
  encoding := ((encoding // 256) - 33) * 94 + ((encoding \\ 256) - 33).
  blt copy: ((encoding * maxWidth)@0 extent: maxWidth@height)
  from: 0@0 in: form.
  ].
  ] ifFalse: [
  1 to: charsNum do: [:i |
  stream := ReadStream on: (chars at: i).
  form := stream next.
  encoding := stream next.
  bbx := stream next.
  lastAscii+1 to: encoding-1 do: [:a | xTable at: a+2 put: (xTable at: a+1)].
  blt copy: (((xTable at: encoding+1)@(ascent - (bbx at: 2) - (bbx at: 4)))
  extent: (bbx at: 1)@(bbx at: 2))
  from: 0@0 in: form.
  xTable at: encoding+2 put: (xTable at: encoding+1)+(bbx at: 1).
  lastAscii := encoding.
  ]
  ].
 
  ret := Array new: 8.
  ret at: 1 put: xTable.
  ret at: 2 put: glyphs.
  ret at: 3 put: minAscii.
  ret at: 4 put: maxAscii.
  ret at: 5 put: maxWidth.
  ret at: 6 put: ascent.
  ret at: 7 put: descent.
  ret at: 8 put: pointSize.
  ^ret.
  " ^{xTable. glyphs. minAscii. maxAscii. maxWidth. ascent. descent. pointSize}"
  !

Item was changed:
  ----- Method: BDFFontReader>>readChars (in category 'reading') -----
  readChars
  | strikeWidth ascent descent minAscii maxAscii maxWidth chars charsNum height form encoding bbx array width pointSize stream |
  form := encoding := bbx := nil.
  self readAttributes.
  height := Integer readFromString: ((properties at: #FONTBOUNDINGBOX) at: 2).
+ ascent := Integer readFromString: (properties at: #'FONT_ASCENT') first.
+ descent := Integer readFromString: (properties at: #'FONT_DESCENT') first.
+ pointSize := (Integer readFromString: (properties at: #'POINT_SIZE') first) // 10.
- ascent := Integer readFromString: (properties at: 'FONT_ASCENT' asSymbol) first.
- descent := Integer readFromString: (properties at: 'FONT_DESCENT' asSymbol) first.
- pointSize := (Integer readFromString: (properties at: 'POINT_SIZE' asSymbol) first) // 10.
 
  maxWidth := 0.
  minAscii := 9999.
  strikeWidth := 0.
  maxAscii := 0.
 
  charsNum := Integer readFromString: (properties at: #CHARS) first.
  chars := Set new: charsNum.
 
  1 to: charsNum do: [:i |
  array := self readOneCharacter.
  stream := ReadStream on: array.
  form := stream next.
  encoding := stream next.
  bbx := stream next.
  form ifNotNil: [
  width := bbx at: 1.
  maxWidth := maxWidth max: width.
  minAscii := minAscii min: encoding.
  maxAscii := maxAscii max: encoding.
  strikeWidth := strikeWidth + width.
  chars add: array.
  ].
  ].
 
  chars := chars asSortedCollection: [:x :y | (x at: 2) <= (y at: 2)].
 
  ^ chars.
  !

Item was removed:
- ----- Method: CompositionScanner>>canComputDefaultLineHeight (in category 'testing') -----
- canComputDefaultLineHeight
- ^ rightMargin notNil!

Item was changed:
  ----- Method: CompositionScanner>>composeLine:fromCharacterIndex:inParagraph: (in category 'scanning') -----
  composeLine: lineIndex fromCharacterIndex: startIndex inParagraph: aParagraph
  "Answer an instance of TextLineInterval that represents the next line in the paragraph."
  | runLength stopCondition |
  destX := spaceX := leftMargin := aParagraph leftMarginForCompositionForLine: lineIndex.
  destY := 0.
  rightMargin := aParagraph rightMarginForComposition.
  leftMargin >= rightMargin ifTrue: [self error: 'No room between margins to compose'].
  lastIndex := startIndex. "scanning sets last index"
  lineHeight := textStyle lineGrid.  "may be increased by setFont:..."
  baseline := textStyle baseline.
  self setStopConditions. "also sets font"
  self handleIndentation.
  runLength := text runLengthFor: startIndex.
  runStopIndex := (lastIndex := startIndex) + (runLength - 1).
  line := TextLineInterval
  start: lastIndex
  stop: 0
  internalSpaces: 0
  paddingWidth: 0.
  spaceCount := 0.
 
  [stopCondition := self scanCharactersFrom: lastIndex to: runStopIndex
  in: text string rightX: rightMargin stopConditions: stopConditions
  kern: kern.
  "See setStopConditions for stopping conditions for composing."
+ self perform: stopCondition] whileFalse.
+
+ ^line
+ lineHeight: lineHeight + textStyle leading
+ baseline: baseline + textStyle leading!
- (self perform: stopCondition)
- ifTrue: [^line lineHeight: lineHeight + textStyle leading
- baseline: baseline + textStyle leading]] repeat!

Item was changed:
  ----- Method: FontSet class>>fontCategory (in category 'private') -----
  fontCategory
+ ^ #'Graphics-Fonts'!
- ^ 'Graphics-Fonts' asSymbol!