[squeak-dev] The Trunk: Graphics-nice.250.mcz
commits at source.squeak.org
commits at source.squeak.org
Fri Oct 4 22:53:03 UTC 2013
Nicolas Cellier uploaded a new version of Graphics to project The Trunk:
http://source.squeak.org/trunk/Graphics-nice.250.mcz
==================== Summary ====================
Name: Graphics-nice.250
Author: nice
Time: 5 October 2013, 12:51:56.389 am
UUID: 792cd68c-1112-4b21-81aa-a263b503fd23
Ancestors: Graphics-nice.249
Categorize placeEmbeddedObject: as private
Merge Graphics-Text support and Graphics-Text: really, these are all support classes
Remove TextLine>>justifiedPadFor: which is superseded by justifiedPadFor:font: for a few years now (since integration of FreeType support in trunk image).
=============== Diff against Graphics-nice.249 ===============
Item was changed:
SystemOrganization addCategory: #'Graphics-Display Objects'!
SystemOrganization addCategory: #'Graphics-External-Ffenestri'!
SystemOrganization addCategory: #'Graphics-Files'!
SystemOrganization addCategory: #'Graphics-Fonts'!
SystemOrganization addCategory: #'Graphics-Primitives'!
SystemOrganization addCategory: #'Graphics-Text'!
SystemOrganization addCategory: #'Graphics-Transformations'!
- SystemOrganization addCategory: #'Graphics-Text Support'!
Item was changed:
+ ----- Method: CharacterBlockScanner>>placeEmbeddedObject: (in category 'private') -----
- ----- Method: CharacterBlockScanner>>placeEmbeddedObject: (in category 'stop conditions') -----
placeEmbeddedObject: anchoredMorph
"Workaround: The following should really use #textAnchorType"
anchoredMorph relativeTextAnchorPosition ifNotNil:[^true].
(super placeEmbeddedObject: anchoredMorph) ifFalse: [^ false].
specialWidth := anchoredMorph width.
^ true!
Item was changed:
+ ----- Method: CharacterScanner>>placeEmbeddedObject: (in category 'private') -----
- ----- Method: CharacterScanner>>placeEmbeddedObject: (in category 'text attributes') -----
placeEmbeddedObject: anchoredMorph
"Place the anchoredMorph or return false if it cannot be placed.
In any event, advance destX by its width."
| w |
"Workaround: The following should really use #textAnchorType"
anchoredMorph relativeTextAnchorPosition ifNotNil:[^true].
destX := destX + (w := anchoredMorph width).
(destX > rightMargin and: [(leftMargin + w) <= rightMargin])
ifTrue: ["Won't fit, but would on next line"
^ false].
lastIndex := lastIndex + 1.
"self setFont." "Force recalculation of emphasis for next run"
^ true!
Item was changed:
+ ----- Method: CompositionScanner>>placeEmbeddedObject: (in category 'private') -----
- ----- Method: CompositionScanner>>placeEmbeddedObject: (in category 'stop conditions') -----
placeEmbeddedObject: anchoredMorph
| descent |
"Workaround: The following should really use #textAnchorType"
anchoredMorph relativeTextAnchorPosition ifNotNil:[^true].
(super placeEmbeddedObject: anchoredMorph) ifFalse: ["It doesn't fit"
"But if it's the first character then leave it here"
lastIndex < line first ifFalse:[
line stop: lastIndex-1.
^ false]].
descent := lineHeight - baseline.
lineHeight := lineHeight max: anchoredMorph height.
baseline := lineHeight - descent.
line stop: lastIndex.
^ true!
Item was changed:
+ ----- Method: DisplayScanner>>placeEmbeddedObject: (in category 'private') -----
- ----- Method: DisplayScanner>>placeEmbeddedObject: (in category 'stop conditions') -----
placeEmbeddedObject: anchoredMorph
anchoredMorph relativeTextAnchorPosition ifNotNil:[
anchoredMorph position:
anchoredMorph relativeTextAnchorPosition +
(anchoredMorph owner textBounds origin x @ 0)
- (0 at morphicOffset y) + (0 at lineY).
^true
].
(super placeEmbeddedObject: anchoredMorph) ifFalse: [^ false].
(anchoredMorph isMorph or: [anchoredMorph isPrimitiveCostume]) ifTrue: [
anchoredMorph position: ((destX - anchoredMorph width)@lineY) - morphicOffset
] ifFalse: [
destY := lineY.
runX := destX.
anchoredMorph
displayOn: bitBlt destForm
at: destX - anchoredMorph width @ destY
clippingBox: bitBlt clipRect
].
^ true!
Item was changed:
Object subclass: #TextComposer
instanceVariableNames: 'lines maxRightX currentY scanner possibleSlide nowSliding prevIndex prevLines currCharIndex startCharIndex stopCharIndex deltaCharIndex theText theContainer isFirstLine theTextStyle defaultLineHeight actualHeight wantsColumnBreaks'
classVariableNames: ''
poolDictionaries: ''
+ category: 'Graphics-Text'!
- category: 'Graphics-Text Support'!
Item was changed:
Object subclass: #TextLine
instanceVariableNames: 'left right top bottom firstIndex lastIndex internalSpaces paddingWidth baseline leftMargin'
classVariableNames: ''
poolDictionaries: 'TextConstants'
+ category: 'Graphics-Text'!
- category: 'Graphics-Text Support'!
!TextLine commentStamp: '<historical>' prior: 0!
A TextLine embodies the layout of a line of composed text.
left right top bottom The full line rectangle
firstIndex lastIndex Starting and stopping indices in the full text
internalSpaces Number of spaces to share paddingWidth
paddingWidth Number of pixels of extra space in full line
baseline Distance of baseline below the top of the line
leftMargin Left margin due to paragraph indentation
TextLine's rather verbose message protocol is required for compatibility with the old CharacterScanners.!
Item was removed:
- ----- Method: TextLine>>justifiedPadFor: (in category 'scanning') -----
- justifiedPadFor: spaceIndex
- "Compute the width of pad for a given space in a line of justified text."
-
- | pad |
- internalSpaces = 0 ifTrue: [^0].
- pad := paddingWidth // internalSpaces.
- spaceIndex <= (paddingWidth \\ internalSpaces)
- ifTrue: [^pad + 1]
- ifFalse: [^pad]!
More information about the Squeak-dev
mailing list
|