[squeak-dev] The Trunk: ST80-nice.158.mcz

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Wed Oct 9 00:42:13 UTC 2013


The lastDisplayableIndex slept from a future update, but that should not
matter too much...


2013/10/9 <commits at source.squeak.org>

> Nicolas Cellier uploaded a new version of ST80 to project The Trunk:
> http://source.squeak.org/trunk/ST80-nice.158.mcz
>
> ==================== Summary ====================
>
> Name: ST80-nice.158
> Author: nice
> Time: 9 October 2013, 2:20:39.862 am
> UUID: 32f810c1-ddd6-49b7-a593-762fba87856b
> Ancestors: ST80-nice.157
>
> DisplayScanner does not require a lineHeight inst. var., it can be a
> temporary.
>
> =============== Diff against ST80-nice.157 ===============
>
> Item was changed:
>   ----- Method: DisplayScanner>>displayLines:in:clippedBy: (in category
> '*ST80-Support') -----
>   displayLines: linesInterval in: aParagraph clippedBy: visibleRectangle
>         "The central display routine. The call on the primitive
>         (scanCharactersFrom:to:in:rightX:) will be interrupted according
> to an
>         array of stop conditions passed to the scanner at which time the
> code to
>         handle the stop condition is run and the call on the primitive
> continued
>         until a stop condition returns true (which means the line has
>         terminated)."
>         | leftInRun |
>         "leftInRun is the # of characters left to scan in the current run;
>                 when 0, it is time to call 'self setStopConditions'"
>         morphicOffset := 0 at 0.
>         leftInRun := 0.
>         self initializeFromParagraph: aParagraph clippedBy:
> visibleRectangle.
>         ignoreColorChanges := false.
>         foregroundColor := paragraphColor := aParagraph foregroundColor.
>         backgroundColor := aParagraph backgroundColor.
>         aParagraph backgroundColor isTransparent
>                 ifTrue: [fillBlt := nil]
>                 ifFalse: [fillBlt := bitBlt copy.  "Blt to fill spaces,
> tabs, margins"
>                                 fillBlt sourceForm: nil; sourceOrigin: 0 at 0.
>                                 fillBlt fillColor: aParagraph
> backgroundColor].
>         rightMargin := aParagraph rightMarginForDisplay.
>         lineY := aParagraph topAtLineIndex: linesInterval first.
>         bitBlt destForm deferUpdatesIn: visibleRectangle while: [
>                 linesInterval do:
>                         [:lineIndex |
> +                       | string startIndex lastPos runLength
> stopCondition baselineY lineHeight |
> -                       | string startIndex lastPos runLength
> stopCondition baselineY |
>                         line := aParagraph lines at: lineIndex.
> +                       lastDisplayableIndex := lastIndex := line first.
> -                       lastIndex := line first.
>                         leftInRun <= 0
>                                 ifTrue: [self setStopConditions.  "also
> sets the font, alignment and emphasisCode"
>                                                 leftInRun := text
> runLengthFor: line first].
>                         leftMargin := aParagraph
> leftMarginForDisplayForLine: lineIndex alignment: alignment.
>                         destX := leftMargin.
>                         lineHeight := line lineHeight.
>                         fillBlt == nil ifFalse:
>                                 [fillBlt destX: visibleRectangle left
> destY: lineY
>                                         width: visibleRectangle width
> height: lineHeight; copyBits].
>                         baselineY := lineY + line baseline.
>                         destY := baselineY - font ascent.  "Should have
> happened in setFont"
>                         runLength := leftInRun.
>                         runStopIndex := lastIndex + (runLength - 1) min:
> line last.
>                         leftInRun := leftInRun - (runStopIndex - lastIndex
> + 1).
>                         spaceCount := 0.
>                         string := text string.
>                         self handleIndentation.
>                         [
>                                 startIndex := lastIndex.
>                                 lastPos := destX at destY.
>                                 stopCondition := self scanCharactersFrom:
> lastIndex to: runStopIndex
>                                                         in: string rightX:
> rightMargin stopConditions: stopConditions
>                                                         kern: kern.
>                                 lastIndex >= startIndex ifTrue:[
>                                         font displayString: string on:
> bitBlt
>                                                 from: startIndex to:
> lastIndex at: lastPos kern: kern].
>                                 "see setStopConditions for stopping
> conditions for displaying."
>                                 self perform: stopCondition
>                         ] whileFalse.
>                         fillBlt == nil ifFalse:
>                                 [fillBlt destX: destX destY: lineY width:
> visibleRectangle right-destX height: lineHeight; copyBits].
>                         lineY := lineY + lineHeight]]!
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20131009/60395499/attachment-0001.htm


More information about the Squeak-dev mailing list